SQL注入时,空格的使用是非常普遍的。比如,我们使用union来取得目标数据。
空格被过滤,但括号没有被过滤,可通过括号绕过,我的经验是,在MySQL中,括号是用来包围子查询的。因此,任何可以计算出结果的语句,都可以用括号包围起来。
微有点安全意识的朋友就应该懂得要做一下sql注入过滤。下面是一些绕过sql注入过滤的一些方法(没有深入研究之意,所以只是集中简单的绕过sql注入过滤方法)1. 绕过空格过滤
使用注释/**/来替换,类似C语言一样,C语言在编译之前注释会被用个空格替换。
select/**/pwd/**/from/**/usertable/**/where/**/id='admin'
2.绕过关键字过滤
很多人都对select, union *** 作关键字等进行了过滤,但是有可能没有考虑大小写的问题。
SeLeCT pwd from usertable where id='admin'
3.用编码绕过关键字过滤
可以把字符转换为%加上16进制的形式,如or 1=1即%6f%72%20%31%3d%31
4.使用char来绕过过滤
使用char(ASCII码)来替换字符,可以直接在MySql下工作。CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)为or 1=1的编码。
select pwd from usertable where id='root' + CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
5.绕过其他一些过滤机制
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)