您的位置:首页 > 数据库 > MySQL

mysql注入时的注释处理

2009-01-08 15:53 330 查看
我们在碰到字符型注入点时,要想办法把原查询SQL语句后面的单引号消掉才能让注入语句执行成功,我所知道常用的办法有以下几种(也许还有其他办法,望高手指教),假设查询字段数为两个且只用到一个字符型条件参数:

1、加注释,如:showtopic.php?key=abc' and 1<> 1 union select 1, 2 #
2、union方式,如:showtopic.php?key=abc' and 1<> 1 union select 1, 2 union select 1, 1 from information_schema.tables where '1' <> '1
3、特殊情况,如:showtopic.php?key=abc' and 1<> 1 union select 1, 2 from user where id=5 and '1' <> '1

以上几种方式中最简单的就是加注释了,这样就不用管原SQL后面是不是还有其他条件了。mysql的注释有三种方式:
1、块注释:/* ..... */
2、行注释:#
3、行注释:-- (--%20,注意后面有一个空格,与SQL标准稍有差别)

最先学习注入时看到很多文章都是说加后面加 /* ,但是我测试始终不成功,直接在mysql的终端试也不行,会提示输入结束符 */。用mssql测试同样失败,提示缺少匹配的注释结事符 */。我想块注释应该是要成对匹配的,否则执行会失败。如果是这样的话/*注释符对于我们注入来说是没有作用的。

使用#行注释符时要注意了,因为#在URI里面表示锚链接,所以要对它进行编码转义才行,输入 %23 即可。

--%20可以直接使用,但切记后面要有%20,直接输空格的话会被截断,只有URL中间的空间才会自动进行编码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: