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中间的空间才会自动进行编码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值