当前位置: 首页 > news >正文

基于boolian的盲注

基于boolian的盲注

前言:失效?

在 Pikachu 靶场的 Blind SQLi (Boolean) 关卡中,情况变了。无论我输入什么 Payload,页面只有两种反应:

  1. 显示用户信息(代表查询成功/真)。
  2. 显示“用户不存在”或空白(代表查询失败/假)。

后台屏蔽了报错信息,也不回显查询结果。数据库变成了“哑巴”,只会在我们问对问题时“点头”,问错时“摇头”。

所以我们要爆出数据库就只能一步一步的问。

怎么问?逻辑与(AND)

我们要构造一个逻辑判断题,利用页面的“真/假”状态来推测数据。

寻找“真”与“假”的基准

在盲注中,第一步必须找到一个​稳定的参照系

  • 基准用户​:必须使用一个数据库中真实存在的用户名(例如 kobe)。
  • 逻辑运算符:必须使用 AND​,而不是 OR

为什么不能用 OR?

如果在盲注中使用 kobe' or 1=1 #​,SQL 语句变成 WHERE username='kobe' OR 1=1

  • 因为 1=1​ 永远为真,数据库会把​表中所有用户(vince, allen, kobe...)都查出来。
  • PHP 通常只取第一行(可能是 vince),导致页面显示的信息和你输入的 kobe 不一致,失去了“控制变量”的能力,很难判断真假。

正确的测试逻辑 (AND)

利用 AND 的“一假则假”特性:

  • 测试真 (True) 状态​:kobe' and 1=1 #

    • 逻辑:真 AND 真 = 真
    • 现象:页面正常显示 kobe 的手机号和住址。(这是点头)
  • 测试假 (False) 状态​:kobe' and 1=2 #

    • 逻辑:真 AND 假 = 假
    • 现象:页面提示“用户不存在”或信息消失。(这是摇头)

结论: 只要能重现这两种不同的画面,就说明我们掌握了控制数据库说话的“开关”。

盲注“三板斧”

我们要把复杂的查询结果(如数据库名 pikachu),拆解成一个个“是/否”问题。需要用到以下三个 SQL 函数:

|函数|语法|作用|实战举例|||||
|length()|​length(str)|猜长度|​length(database())=7|||||
|substr()|​substr(str, pos, len)|切片截取|​substr(database(),1,1)(取第1个字符)|||||

ascii() ascii(char) 转ASCII码 ascii('p')(方便比大小,二分法)

流程

进数据库->爆表名 -> 爆列名 -> 爆数据。

猜数据库:假设我们要通过盲注猜出当前数据库的名字。

第一步:猜长度

我们要确定数据库名字有几个字母。

  • Payload (猜它有99位):kobe' and length(database())=99 #

    • 反馈: 页面信息消失(假)。说明长度不对。
  • Payload (猜它有7位):kobe' and length(database())=7 #

    • 反馈: 页面显示 kobe 信息(真)。
    • 结论: 数据库名长度为 ​7

第二步:猜内容 (使用 substr)

确定长度为 7 后,开始猜第 1 个字母是什么。

  • Payload (猜它是 'x'):kobe' and substr(database(),1,1)='x' #

    • 反馈: 页面信息消失(假)。
  • Payload (猜它是 'p'):kobe' and substr(database(),1,1)='p' #

    • 反馈: 页面显示 kobe 信息(真)。
    • 结论: 第 1 个字母是 ​ 'p'

第三步:进阶技巧 (使用 ascii 二分法)

如果只能用 '=' 一个个字母试(a, b, c...),效率太低。我们可以转成 ASCII 码比大小。

  • Payload:kobe' and ascii(substr(database(),1,1)) > 100 #

    • 反馈: 真。说明字母的 ASCII 码大于 100。
    • 接下来问是否大于 110,以此类推,通过折半查找快速锁定字符。

最后

手工盲注非常痛苦,理解原理后,实战中通常交给 SQLMap 或 Python 脚本来完成。

而且盲注需要比较好的数据库基础知识

http://www.jsqmd.com/news/183290/

相关文章:

  • 信息安全篇---电子信封
  • Sonic数字人嘴型准确率高达98%?实验室数据
  • 墨西哥亡灵节纪念:逝去亲人的声音再次响起
  • 深度测评专科生必用的10个AI论文网站:2025最新排名与对比
  • Sonic数字人后台管理系统可基于HTML+JavaScript开发
  • 深入解析:神经网络反向传播:原理、算法与实现
  • 数据湖数据一致性修复:脏数据清洗+历史数据订正实战方案
  • 消费者行为研究:购物路径数据搭配VoxCPM-1.5-TTS-WEB-UI情境描述
  • MATLAB高效算法实战技术文章大纲
  • 纳斯达克交易策略
  • Nginx 性能调优指南:开启 Gzip、KeepAlive 与 负载均衡配置,让你的服务器吞吐量翻倍
  • 告别轮询!WebSocket 就像“专线电话”,让服务器主动找你聊天
  • Sonic GitHub Star数破万,开源生态持续繁荣
  • 1.2随笔
  • 交通部测试Sonic在高速公路应急广播系统应用
  • 网盘直链下载助手提取Sonic资源?提速神器
  • 计算机毕设“查重”太高怎么办?用 DeepSeek + Python 实现“论文自动降重”,稳过 10%
  • 网盘直链助手失效?我们提供稳定模型分发链接
  • JavaSE——方法
  • How to Use make on Windows
  • 吐血推荐!专科生必用8款AI论文软件测评
  • 注册发现与配置治理——服务目录、心跳、推拉模式与配置热更新的权衡
  • 提示工程中的用户研究:架构师优化提示的新工具
  • blende内部运行python代码 试跑
  • Contrastive Learning 对比学习 | InfoNCE loss 与互信息的数学关联
  • Day6switch语句
  • 铁路车站自动检票语音提示个性化设置功能
  • 张朝阳的“慢美学”:一位长期主义者的产品信仰与商业智慧
  • 小说配音不再难:普通用户也能用VoxCPM-1.5-TTS-WEB-UI制作广播剧
  • 可编辑的科研插图用AI这样画!借助Nano Banana Pro构建结构化提示词,搭配工具一键搞定