来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 上一篇: http://www.2cto.com/Article/201209/153279.htmlweb应用程序会对用户的输入进行验证,过滤其中的一些关键字,这种过滤我们可以试着用下面的方法避开。1、 不使用被过滤的字符: 比如注...
上一篇: http://www.2cto.com/Article/201209/153279.html 1、 不使用被过滤的字符: 比如注入一个数字数据,就不需要使用单引号;’ or 1=1–,如果注释字符被过滤,我们可以这样写 ‘ or ’1′=’1 。 2、 避免使用简单确认: 如果select关键字被过滤,我们可以尝试用下面的方法书写select,SeleCT; selselectect;或者使用URLencode,ascii编码,%53%45%4c%45%43%54(ascii). 3、 使用sql注释绕过: 如果空格被过滤了,我们可以使用sql语言的注释。select/**/username,password/**/from/**/user–, mysql中甚至可以这样 sele/**/ct username fr/**/om user–. 4、 替换被阻止的字符串: 要表示admin,oracle中可以用 ‘adm’||’in’ , mysql中可以用 concat(‘adm’,'in’); mssql中可以用:’adm’+'in’. 数据库语法中有很多字符串操作函数,可以用来创建被过滤的字符串。Oracle中包含,CHR(ascii码转化)、REVERSE(字符串反转),TRANSLATE(高级的字符串替换),REPLACE,SUBSTR函数。 mssql数据库可以使用 exec(‘select * from user’), 这条命令可以变形为 exec(‘sele’+'ct * from user) ,还可以建立一个十六进制的编码的字符串,通过exec来执行,从而避开某些关键字甚至是单引号的过滤。如:declear @q varchar(5000); select @q=0×73 65 6C 65 63 74 20 2A 20 66 72 6F 6D 20 75 73 65 72 ,exec(@q) . 另外如果网站是gbk编码的,也可以利用汉字的编码避开注入: 在magic_quotes_gpc=On的情况下,提交的参数中如果带有单引号’,就会被自动转义\’,使很多注入攻击无效, 这种变换在xss等领域也可以应用,假如服务端是GBK编码格式。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com