手工SQL注入方法

admin 2025-12-22 03:48:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了手工SQL注入的系统性方法,包括’破拆修复’五步工作流程、处理语法陷阱、数据库指纹识别、UNION攻击和盲注技术。文章强调科学方法而非胡乱猜测,提供了具体有效载荷和二分查找技巧,帮助安全人员高效发现和利用SQL注入漏洞,同时指出SQLmap适用于漏洞发现后的数据导出。 综合评分: 88 文章分类: WEB安全,渗透测试,漏洞分析,漏洞POC,实战经验


cover_image

手工SQL注入方法

原创

破天KK

KK安全说

2025年12月19日 12:26 北京

在 NahamCon 的一场精彩演讲中,安全专家Tib3rius详细讲解了如何手动查找 SQL 注入 (SQLi)。

以下是简化到最基本要素的完整方法论。

第一部分:“破拆修复”法

别再胡乱猜测有效载荷了。运用科学方法。目标并非立即入侵数据库,而是要看看数据库是否在监听你的操作。

逻辑:

如果你能故意破坏页面,然后再故意修复它,你就拥有了完全的控制权。

五步工作流程:

  1. 寻找入口点:查找带有 ID 的 URL(id=1)、搜索栏或登录表单。
  2. 建立基线:
  • 请输入有效的ID(id=1)。页面是否加载?是。
  • 输入一个虚假ID(id=9999)。是否显示404错误?是的。

3. “分隔符”:'在有效 ID 后添加单引号 ( )。

  • 输入:

    id=1'

  • 结果:你收到的是 500 错误还是空白页?很好。你的语法有误。

4. “修复”:添加注释字符来“修复”您刚刚添加的引用。

  • 输入:

    id=1' -- -

  • 结果:页面是否恢复正常?

5. 确认:如果页面在步骤 3 中崩溃,但在步骤 4 中正常运行,则说明您发现了一个漏洞。

第二部分:语法陷阱(以及如何修复它们)

1. 尾随空间陷阱

您可以使用它--来注释掉查询的其余部分。

  • 问题:许多数据库要求破折号后必须有一个空格。如果 Web 服务器会去除空格,你的攻击就会失败。
  • 解决方法:使用-- -.
  • 末尾多出的那个破折号会强制数据库识别中间的空格。

2. 评论失败时

有时,注释掉代码会导致网站崩溃(例如,如果查询需要一个结束页脚)。

  • 解决方法:不要删除代码,只需使其在数学上成立即可。

  • 有效载荷:

    ' AND '1'='1

  • 这样既能保持结构完整,又能让你注入命令。

第三部分:指纹识别(这是什么数据库?)

不要猜测。直接问数据库它使用的是什么语言。

请逐一尝试这些有效载荷。第一个返回200 OK(正常页面)的有效载荷会告诉你它采用的技术。

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

现在到了有趣的部分:导出数据。

1. UNION攻击

你想把你的数据和网站的数据合并起来。

  • 问题:网站只显示第一个结果(真正的文章)。
  • 解决方法:将第一个结果设为“False”。
  • 方法:更改id=1id=-1
  • 结果:网站找不到 ID 为 -1 的数据,因此显示您的数据。

2. 查找列数

除非你知道表中有多少列,否则不能使用 UNION 函数。

  • 不要这样做:

    ORDER BY 1,,……(太慢了)ORDER BY 2ORDER BY 3

  • 执行以下操作(二分查找):

  • 尝试ORDER BY 10。出错?

  • 试试看ORDER BY 5。有效吗?

  • 那么答案就在 5 到 10 之间。

  • 极限是以秒为单位的,而不是以分钟为单位的。

3. 登录绕过

试图绕过登录页面?

  • 经典有效载荷:

    ' OR 1=1 --

  • 风险:这可能会返回数据库中的所有用户,导致应用程序混乱。

  • 解决方案:

    ' OR 1=1 LIMIT 1 --

  • 这样就强制数据库只以第一个用户(通常是管理员)的身份登录。

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

有时数据库不会显示文本,只会显示“是”(页面加载成功)或“否”(出错)。

不要逐字逐句地猜测密码。

  • 第一个字母是“a”吗?不是。
  • 是“b”吗?不是。
  • (26 次请求后……)

使用数学方法(二分查找)。

将密码字符转换为数字(ASCII)。

  • 该值是否大于 100?

    是的。(您刚刚排除了 100 个选项)。

  • 它大于110吗?

    不。

  • 好的,介于 100 和 110 之间。

使用这种方法,大约需要7 次请求才能猜出任何字符。

要点总结

SQLmap非常适合在找到漏洞导出数据。但是,如何才能首先找到这个漏洞呢?


免责声明:

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

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

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

本文转载自:KK安全说 破天KK《手工SQL注入方法》

评论:0   参与:  0