mysql注入时的注释处理

我们在碰到字符型注入点时,要想办法把原查询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中间的空间才会自动进行编码。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章