zoukankan      html  css  js  c++  java
  • 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

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

    成功执行!
    img

  • 相关阅读:
    thinkPHP5.0 获取域名
    tp5 composer在packagist引入验证码
    使用build.php快速搭建前后台
    __construct()和__initialize()
    mysql 如何给SQL添加索引
    mysql如何查看SQL语句的执行时间
    thinkPHP自带的图片批量打包扩展ZipArchive
    sizeof和strlen
    Uboot中汇编指令
    Uboot代码分析
  • 原文地址:https://www.cnblogs.com/laoxiajiadeyun/p/10274780.html
Copyright © 2011-2022 走看看