sql注入中的--+注释问题探索

在sql-labs游戏中,经常使用--+放在最后注释多余部分,而mysql中的注释符为#-- 却不能直接使用,以前没学过mysql,一直不理解,也不知道+号的作用,今天有时间特地探索了一下,算是搞明白了其中的原因。

sql-labs闯关游戏资源及介绍见此:https://github.com/Audi-1/sqli-labs


第一关示例:

在源代码中加入下面两行,使网页能回显我们输入的有效输入和执行的mysql语句,方便分析:

img
img
第一关正常地址栏传参如下:
img
img

猜列数时的使用payload:
img
屏幕显示有效输入为:
img
这里尝试使用#号或者–
使用#号
img
img
发现执行的sql语句中没有#

原因是url中#号是用来指导浏览器动作的(例如锚点),对服务器端完全无用。所以,HTTP请求中不包括#

将#号改成url的编码%23就可以了
img
img
使用--
img
img
使用--+
img
img

对比上面–的效果,这里发现号在语句中变成了空格。用来和后面的单引号分隔开,将后面的语句注释。

了解原理后便知道了--无法使用的原因,是因为--与后面的这个单引号连接在一起,无法形成有效的mysql语句。

在mysql中使用这个语句分析原因,输入后回车显示分号没有闭合
img
img

所以在注入时我们除了--+外,也可以使用--'来完成注入语句
img

成功执行!
img

  • 87
    点赞
  • 171
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值