找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

478

积分

0

好友

66

主题
发表于 5 天前 | 查看: 13| 回复: 0

在 NahamCon 大会的一次演讲中,安全专家 Tib3rius 深入剖析了进行手工 SQL 注入(SQLi)的系统性方法。

以下是精简提炼后的核心方法论。

第一部分:“破坏与修复”检测法

摒弃猜测,采用科学方法。初期的目标并非立即窃取数据,而是验证数据库是否会响应你的输入。

核心逻辑:
若能故意“破坏”一个页面,再通过特定输入“修复”它,则证明你拥有控制查询语句的能力。

五步工作流程:

  1. 寻找注入点:识别包含ID参数的URL(例如 id=1)、搜索框或登录表单。
  2. 建立行为基线
    • 输入一个有效的值(如 id=1)。页面正常加载吗?是。
    • 输入一个无效的值(如 id=9999)。页面是否返回404或错误?是。
  3. “破坏”语法:在有效值后添加一个单引号 () 来制造语法错误。
    • 输入:id=1'
    • 结果:页面是否返回500服务器错误或变成空白?如果是,很好,你成功引发了错误。
  4. “修复”语法:使用注释符来“修复”你添加的单引号。
    • 输入:id=1' -- -
    • 结果:页面是否恢复正常加载?
  5. 漏洞确认:如果步骤3导致页面崩溃,而步骤4使其恢复正常,那么你已成功发现一个SQL注入漏洞。这是进行网络安全实战测试的基础。

第二部分:常见语法陷阱与解决方案

1. 尾随空格问题

通常使用 -- 来注释查询的剩余部分。

  • 问题:许多数据库要求注释符后必须有一个空格。若Web服务器过滤了尾部空格,攻击便会失败。
  • 解决方案:使用 -- -。末尾多余的 - 能确保中间的空白被数据库识别。

2. 注释符失效时

有时,注释掉后续代码会导致网站功能异常(例如,原查询需要一个闭合结构)。

  • 解决方案:不删除代码,而是构造一个永真条件来维持原语法结构。
  • 有效载荷‘ AND ‘1’=’1
  • 这样既能保持查询完整,又能嵌入你自己的逻辑。

第三部分:数据库指纹识别

不要盲目猜测数据库类型。直接让数据库“告诉”你它是什么。
逐一尝试以下载荷,首个返回“200 OK”(正常页面)的即为目标数据库技术。
数据库指纹识别查询语句

第四部分:数据窃取与漏洞利用

确认漏洞后,便可进行数据提取。

1. UNION 联合查询攻击

目的是将你的查询结果与应用程序的数据合并显示。

  • 问题:页面通常只显示第一个查询结果(即原始数据)。
  • 解决方案:使原始查询结果为空。
  • 方法:将参数改为一个不存在的值,例如 id=-1
  • 结果:应用程序找不到ID为-1的数据,因此会显示你通过UNION注入的数据。

2. 高效确定列数

使用UNION的前提是必须知道前后查询的列数一致。

  • 低效方法:依次尝试 ORDER BY 1, ORDER BY 2, ORDER BY 3…(速度慢)。
  • 高效方法(二分查找)
    • 尝试 ORDER BY 10。报错吗?
    • 尝试 ORDER BY 5。成功吗?
    • 那么答案就在5到10之间。以此类推,能在数秒内确定列数。

3. 登录绕过技巧

尝试绕过身份验证时:

  • 经典载荷‘ OR 1=1 --
  • 风险:这可能返回所有用户,导致应用逻辑混乱。
  • 优化方案‘ OR 1=1 LIMIT 1 --
  • 作用:强制数据库仅返回第一条(通常是管理员)记录,实现精准登录绕过。

第五部分:盲注攻击(当数据库静默时)

有时,数据库不会直接返回数据或错误信息,只通过页面是否正常加载来反馈“是”或“否”。

切勿逐字符暴力猜解(例如:密码第一个字母是a吗?是b吗?…)。

应采用基于数学的二分查找法:

  1. 将字符转换为其ASCII码值。
  2. 询问数据库:该值是否大于100?页面正常(是)→ 排除了小于100的所有可能。
  3. 询问:该值是否大于110?页面错误(否)→ 范围缩小到100-110之间。

使用此方法,仅需约 7 次请求 便可确定一个字符的准确值,极大提升了盲注效率。

总结

自动化工具如 SQLmap 在确认漏洞后用于数据导出非常高效。但如何首先发现漏洞呢?掌握这套手工检测与利用的科学安全测试方法论至关重要。




上一篇:慢速DoS攻击原理与防御实战:使用SlowHTTPTest模拟及Apache安全加固
下一篇:iPhone存储空间满负荷运行的后果与清理策略
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:11 , Processed in 0.402651 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表