【项目实战】别人挖3个,你一个都没有

admin 2026-01-26 02:09:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文复盘了利用OrderBy参数进行SQL注入的实战案例。针对工具无法检测的盲注,提出通过构造逻辑表达式(如1/0除零错误)验证漏洞。利用布尔盲注可逐位猜解数据。核心建议是摒弃工具依赖,对排序类参数执行手动逻辑测试。 综合评分: 82 文章分类: 渗透测试,漏洞分析,SRC活动,漏洞POC


cover_image

【项目实战】别人挖3个,你一个都没有

原创

隐雾安全 隐雾安全

隐雾安全

2026年1月25日 10:01 四川

📝 编者语

本文是 [隐雾SRC]学员的实战项目复盘。

对着一个看起来全是动态参数的网站,用sqlmap跑了一遍,显示System is stable。 换 Xray 挂着代理又跑一遍,还是 0 产出。

别人测半小时不到,交了3个高危注入。

今天来复盘3个真实的 “灯下黑” 漏洞。

(注:本文所有敏感信息已脱敏,仅供安全研究与教学交流,请勿用于非法用途。)

1

先做个自测:你平时会测“排序”功能吗?

当你在抓包看到以下这种参数时,你的第一反应是什么?

  • 小白反应:只测 search 框,因为那里能输入特殊字符。
  • 工具反应:尝试在 orderFields 后面加 ‘ 报错,没报错就判定为 Safe。
  • 高手反应:这是 Order By 注入 的高发区,不能用常规语发,要用逻辑表达式。

如果你从未在 orderFields、sort、dir 这类参数上死磕过,那你至少错过了 20% 的 SQL 注入。

2

复盘:一个“除以0”引发的血案

这次的 3 个漏洞,全部位于列表查询接口的 orderFields 参数中。

现象: 目标是一个认证业务管理平台。当我们点击列表表头的“排序”按钮时,前端会发一个 POST 请求,告诉后端按什么字段排序。

为什么工具扫不到? 因为开发人员虽然没做预编译,但可能做了简单的字符过滤,或者后端不回显具体的 SQL 报错信息。 你发 orderFields=create_time’,后端只是返回“操作失败”或者空数据,工具认为这是正常容错,直接 Pass。

正确的打开方式(人工逻辑判断): 我们不靠报错回显,我们靠逻辑运算

第一步:构造“真”命题 首先,我们要确认这个参数真的带入了数据库执行。 攻击者发送了 Payload:

case 1.0 when 1/1 then id else cb_id end

结果返回

翻译一下:如果 1除以1 没问题(废话),就按 id 排序。 结果:服务器返回 200 OK,数据正常返回。

第二步:构造“假”命题(逻辑炸弹)

接下来是见证奇迹的时刻。 攻击者将 Payload 修改为:

case 1.0 when 1/0 then id else cb_id end

结果返回

翻译一下:如果 1除以0 没问题… 等等,除数不能为0!数据库执行到这里会抛出“除零错误”。 结果:服务器虽然没把 SQL 错误吐出来,但接口直接报错(如返回“操作失败”或 500)。

结论

1/1 正常,1/0 报错。 证明后端把我们的数学公式带入数据库执行了 —— 石锤 SQL 注入。

3

深入利用:既然能执行逻辑,就能偷数据

第一步:打破“静态”假象

一旦确认了 1/1 和 1/0 的区别,接下来就是典型的 布尔盲注(Boolean Blind)。

报告中的攻击者构造了如下 Payload 来猜解数据库用户名:

case 1.0 when 1/(ascii(substr(user,1,1))-67) then id else cb_id end

  • 如果用户名第一位是 ‘C’ (ASCII 67),那么 67-67=0,变成 1/0—— 报错
  • 如果不是 ‘C’,分母不为 0 —— 正常

4

为什么你必须改掉“一把梭”的习惯?

这 3 个漏洞给我们最大的教训是:不要迷信工具的“智能”。

SQLMap 的 -level 1(默认等级)通常不会深测 ORDER BY 子句,因为这里的语法和 WHERE 子句完全不同(不能直接用 AND 1=1)。

一定要把这个SOP刻进脑子里:

  1. 看到列表页 -> 必测排序功能。
  2. 抓到包 -> 锁定 sort, order, field 等参数。
  3. 手动测 ->
  • 试 desc / asc 看顺序变没变(确认参数有效)。
  • 试 (case when 1=1 then id else 1 end) 看报不报错。
  • 最绝杀:试 1/0 这种逻辑炸弹。

5

别再手动敲算式了

每次都在 Burp 里手敲 case when 挺累的,而且不同的数据库(Oracle/MySQL/PostgreSQL)语法还不一样,容易敲错。

我专门帮学员整理了一份《Order By 注入专用 Fuzz 字典.txt》。 里面涵盖了主流数据库的逻辑判断 Payload,可以直接导入Burp 的Intruder 模块,一键暴力测试。

获取方式:

  1. 加我微信,备注 【字典】。
  2. 我直接把这份txt发给你,下次遇到排序参数,扔进去跑一遍就行。

!

微信号丨Hiddenfog001

往期内容

通用0day挖掘思路

某大厂勒索病毒处置流程外泄

今年大一,不小心黑进学校的迎新系统怎么办

英雄联盟租号平台getshell

记一次色情APP的渗透过程

课程推荐

隐雾SRC第八期全面升级

零基础就业班-三包模式

只要98,JS逆向带回家!


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:隐雾安全 隐雾安全 隐雾安全《【项目实战】别人挖3个,你一个都没有》

评论:0   参与:  0