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.绕过其他一些过滤机制
1,避免使用被阻止的字符,即不使用这些字符仍然达到攻击目的。A,如果注入一个数字数据字段,就不需要使用单引号。
B,输入注释符号被阻止使用,我们可以设计注入的数据,既不破坏周围的查询语法。
目的其实很简单,就是把后面的单引号给闭合掉。
C,在一个MSSQL注入中注入批量查询的时候,不必使用分号分隔符。
只要纠正所有批量查询的语法,无论你是否使用分号,查询的解析器依然能正确的去解释它们的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)