本文仅用于讨论网络安全技术,以保护信息安全为目的,请勿用于非法用途!
前面讲过sqlmap入门参数,这里主要讲解sqlmap的进阶参数。
这个参数指需要执行的测试等级,一共有5个等级;默认情况下,不加level,就是进行最低的1级探测。
Sqlmap在探测的时候会添加自己内置的payload,不同的等级添加的payload附加就不一样。其中5级是使用全方位的payload进行探测,会自动破解出cookie、XFF等头部注入。当然万事有两面,这样会导致扫描破解非常慢。
这个参数还会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试。总之,不确定如何测试时,为了保证全面性,建议使用最高的level值 --level 5进行测试。
该命令用于查询当前用户是否为数据库的管理员。返回True就是,否则就不是:
sqlmap -u http://192.168.31.16/sql/Less-2/?id=1 --is-dba
HTTP Referer是请求头的一部分,当浏览器向web发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
SQLMap可以在请求中伪装HTTP中的referer。当--level设置成3或3以上时,会尝试对referer注入。可以使用referer命令来欺骗,如--referer 这里就相当于假装从百度页面开始进行sql扫描,形成一个欺骗,而不是从自己电脑发起扫描。
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --referer
该命令用于执行指定的SQL语句,相当于返回一个sql环境下的命令窗口!
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --sql-shell
这个就是在sql-shell>下可以执行sql查询语句的命令行形式。
比如:select * from users,由于我们访问的是sql目录,对应的数据库就是我们之前创建的sql注入环境的数据库security。所以例举当前数据库security中的表users下所有的内容(其实就是用户和密码)。
比如:select version(),就能在sql的命令行中查询对方数据库的版本。
该命令查看数据库用户的角色(管理员能够执行的数据库操作行为)。如果当前用户具有权限读取包含所有用户的表,输入该命令会列举每个用户的角色,也可以用-U参数指定想看哪个用户的角色。
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --roles
该命令用于执行任意操作系统命令:
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --os-shell
特别注意:使用该命令有几个必须具备的条件:
1、数据库用户权限是dba权限;
可以创建、删除数据库的最高用户权限(--is-dba参数查询为True)
2、知道网站的绝对路径;
就是要知道对方web服务器具体在哪个盘,什么文件夹下。
比如:xampp web服务器脚本运行环境默认路径是C:/xampp/htdocs/, 比如wamp web服务器脚本运行环境默认路径是C:/wamp/www/, 还有lnetpub服务器脚本运行环境默认路径是C:/Inetpub/wwwroot/。
3、php当中的gpc为off,php自动转义为关闭状态
4、就算具备以上条件,由于是涉及到系统命令,也未必可以执行成功。
比如我们使用:sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --os-shell
首先会提示web应用支持什么语言,我们选择4 php。
我们win7靶机中的wamp有php环境。
然后提示我们选择目标web服务器的默认绝对路径!
我们win7的wamp确实在c盘中,而且底层的Apache php脚本运行环境在www目录下。
没想到成功调用了win7的os-shell>,你只需要cmd命令就可以cmd shell的形式通过数据库MySQL来调用win7的系统shell。和我们在win7本地执行的cmd命令一样!
我这里演示了dir,你也可以使用其他任何能使用的cmd命令。
比如ipconfig,比如net user abc 123456 /add远程添加用户,甚至是修改注册表!
首先,假设win7靶机的c盘有123.txt这个文件;
然后在kali终端下输入:
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --file-read C:/123.txt -v 1
该命令用于读取执行文件。当数据库为MySql、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二级制文件可执行文件;
这个命令使用--file-read命令读取了win7靶机中的c盘根目录下文本文件123.txt,提示下载到了kali本地/root/.sqlmap/output/192.168.31.16/files/C__123.txt;
去kali的/root/.sqlmap/output/192.168.31.16/files/看看,就能发现文件c_123.txt文件;
“.sqlmap”隐藏目录可以使用搜索找到。
该命令用于写入本地文件到服务器中。当数据为MySQL、PostgreSQL或者Microsoft SQL Server,并且当前用户具有dba权限。上传的文件可以是文本、或者二进制可执行文件。
首先在kali的主文件夹中新建一个文件"12.txt",随便搞个文件即可!
在kali终端输入:
sqlmap -u http://192.168.31.16/sql/Less-1/?id=1 --file-write /root/12.txt --file-dest C:\abc\12.txt -v 1
这里的--file-write后面指定的是kali本地文件;--file-dest后面指定的是远程服务器的绝对路径,命名为12.txt;
执行完毕,发现已经显示上传成功。保存在对方服务器C:abc12.txt中。
去win靶机c盘看看有没有,确实有!
到此,我们已经初步学习了SqlMap的进阶操作。这些都是常用的web渗透技术,必须要熟练掌握这些命令的使用,当然前提是你的win7靶机要开启,然后启动WAMP服务器,毕竟我们的SQLMap工具测试都是针对SQL注入靶场环境,切勿用于非测试环境,否则后果自负!
关于kali渗透、Web渗透、Android/ target=_blank class=infotextkey>安卓渗透等嘿客技术。请关注小白嘿客,私信获取。欢迎在下方评论区留言讨论!