编码过滤代码绕过

编码过滤代码绕过

有些网站服务器的防护措施做得较好,提交了正确的语句,比如:提交URL为“http://www.nohacker.com/ProCon.aspx?id=100 and 0<(select ID from hadong.dbo.Users where UserPwd>1)”,网页会自动转入“error.aspx”这个网页

遇到这种情况是由于网站的防注入系统对 URL 提交的符号进行了过滤。本例中,由于网站的防注入系统对“ select ”进行了过滤,一旦提交的 URL 中含有“ select ”网页会转入出错页面。如何判断是否是“ select ”被过滤了呢?需要攻击者将前面的注入语句一部分一部分地提交,某一部分注入语句能显示详细报错信息,而不会转入“ error.aspx ”页面,就说明这部分语句没有被过滤。当然,不同的网站对注入过滤的符号也进行了不同的限制,这就需要读者在实践中不断体会和总结。

遇到这种情况,通常是对注入语句进行变形,经常使用的几种变形方式:

1. 运用编码技术绕过。如:将“ sysadmin ”通过 HEX() 编码为“ 0x730079007300610064006D0069006E00 ”。

2. 通过“ + ”号拆解字符串绕过。如:“ select ”变换为“ se +lect ”。

3. 运用注释语句绕过。如:“ union/**/select/**/user,pwd/**/from/**/login ”变换为“ u/**/uion/**/se/**/lect/**/user,pwd/**/fr/**/om/**/login ”。

4. 大小写变换绕过。如:将“ select ”变换为“ sElEct ”、“ SeLeCt ”、“ se%lect ”等。