PortSwigger SQL注入LAB13& LAB14

[复制链接]
发表于 2026-7-20 19:51:57 | 显示全部楼层 |阅读模式
PortSwigger SQL注入LAB13&LAB14

拖更致歉,前段时间期末周和备赛时间恰好撞上了,忙到飞起,现在也是终于放暑假了,可以安心更博客了
那么本日我们来做PortSwigger SQL注入的LAB13和LAB14,这两道LAB一起做的缘故因由是LAB13可以算得上是LAB14的引入大概教程,那么我们现在开始吧:
【本篇目的】
1. 明白并把握基于时间延长的SQL注入
2. 通过SQL注入来获取所需administrator的暗码,并完成登录一、LAB13

1.1 分析标题


我们先来看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中:

接下来我们只须要按照要求把函数插入就可以了
  1. ' || pg_sleep(10) --
复制代码

插入并点击send之后,页面提示lab已办理。

【LAB 13 Payload】

' || pg_sleep(10) --二、LAB14

2.1 分析标题

接下来我们来看LAB14的标题,使用了cookie举行了跟踪分析,SQL的查询结果不光不会返回,服务器也不会传回任何错误。
终极的目的就回到了老样子,从users表中获取administrator用户的暗码并乐成登录

这种获取暗码的标题都是同样的思绪,先使用LENGTH()来爆破暗码位数,接着再使用SUBSTRING()来逐位爆破。
2.2 构造Payload

我们先来对暗码位数举行爆破,核心思绪就是:假如暗码位数即是某个数,那就给他引入2秒的延长,然后通过Intruder来举行爆破,于是我们得到如下Payload
  1. ';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:
  1. '%3BSELECT CASE WHEN(LENGTH(password) = 1) THEN pg_sleep(2) ELSE pg_sleep(0) END FROM users WHERE username = 'administrator' --
复制代码

然后将他发送到Intruder中,设置“1”作为变量,范围我设在了0-25,然后Start Attack开始攻击

通过观察结果中的Response received值可以得到该LAB中暗码的长度为20

既然得到暗码位数了,照旧一样的原理,我们把Payload稍作更改(使用SUBSTRING()函数)就可以通过Intruder来对暗码举行逐位爆破了:
  1. '%3BSELECT CASE WHEN(SUBSTRING(password,1,1) = 'a') THEN pg_sleep(2) ELSE pg_sleep END FROM users WHERE username = 'administrator' --
复制代码

然后我们把它发送到Intruder内里,攻击范例设置为Cluster bomb(集束炸弹),设置SUBSTRING中的第一个1和反面单引号中的a为变量,而且对这两个变量举行设置,然后Start Attack。

等候攻击竣事之后,通过结果中的Response received值可以得到该LAB中逐位的暗码值

2.3 拼接暗码

接下来我们按照攻击竣事之后的结果来将暗码拼接起来,就可以得到终极暗码的值了。

由此我们可以得出终极的暗码为:lne2l1crku9s7koh86m8
2.4 验证结果

那么现在我们就去网页中使用我们得到的暗码来举行登岸:

登录乐成,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 注入点。
  • LAB14 的核心是使用时间盲注进一步摆列数据,在没有回显和报错的环境下,逐位获取 administrator 的暗码。
  • 这两道题固然目的差别,但思绪是一条线:先确认注入可控,再借助 Burp Suite 的 Repeater 或 Intruder 完成延时判定和主动化爆破。
防御发起:

  • 使用参数化查询或预编译语句,制止把 Cookie、URL 参数等外部输入直接拼接进 SQL。
  • 对全部输入做严酷校验和白名单过滤,尤其是会进入查询条件的字段。
  • 数据库账号依照最小权限原则,低落注入后的横向影响面。
  • 关闭或同一处置处罚数据库错误回显,制止把结构信息袒露给攻击者。
  • 对非常耗时哀求、重复探测哀求举行日记监控监控和告警,及时发现时间盲注举动。
  • 对高频哀求加入速率限定和风控计谋,提拔主动化爆破资本。
  • 对敏感功能启用额外认证或二次校验,镌汰单点失陷带来的风险。
  • 定期举行代码审计和 SQL 注入专项测试,及时修复匿伏弊端。
博客园技能分享 · 请勿用于非法测试

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表