Wireshark分析出攻击者sql注入时查询了哪些数据?
字数 1314 2025-08-15 21:34:08

Wireshark分析SQL注入攻击数据提取教学文档

0x001 概述

本教学文档将详细介绍如何通过Wireshark分析网络流量包,提取攻击者进行SQL注入时查询的数据内容。主要针对布尔盲注(Boolean-based Blind SQL Injection)场景进行分析。

0x002 准备工作

  1. 安装Wireshark网络分析工具
  2. 准备包含SQL注入攻击的流量包文件(.pcap或.pcapng格式)
  3. 了解基本的HTTP协议和SQL注入原理

0x003 流量包初步分析

3.1 过滤HTTP流量

在Wireshark中使用以下过滤表达式:

http

这将只显示HTTP协议的数据包。

3.2 识别注入点

观察HTTP请求中的URL参数,寻找可疑的SQL注入语句。例如:

http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=32#

这是一个典型的布尔盲注语句,特征包括:

  • 使用单引号(')闭合原有查询
  • 包含and逻辑运算符
  • 使用ascii()substring()函数
  • 包含select子查询

0x004 分析注入技术

4.1 布尔盲注原理

攻击者通过构造条件语句,根据页面返回结果的真假来推断数据库信息。本例中:

  • 测试flag表中keyid字段的第一个字符的ASCII码是否为32(空格)
  • 通过不断调整ASCII码值(32-126)来逐个字符破解

4.2 注入语句解析

典型注入语句结构:

http://localhost:81/?id=1' and ascii(substring((select keyid from flag limit 0,1),{字符位置},1))={ASCII值}#

参数说明:

  • {字符位置}:要测试的字符在字符串中的位置(从1开始)
  • {ASCII值}:猜测的字符ASCII码值

0x005 区分成功与失败的注入

5.1 观察响应包差异

  1. 注入失败的响应包:

    • 通常返回错误页面或默认内容
    • 内容长度可能较短
  2. 注入成功的响应包:

    • 返回正常页面内容
    • 内容长度通常较长且固定

5.2 使用Wireshark过滤成功响应

根据内容长度过滤:

http.content_length == 366

(具体长度值需根据实际情况调整)

0x006 自动化提取注入数据

6.1 导出过滤结果

  1. 在Wireshark中应用过滤条件
  2. 导出为文本文件(如aa.txt)

6.2 编写Python解析脚本

import re

number = []
with open("aa.txt", "r", encoding="utf-8") as f:
    for i in f.readlines():
        flag_number = re.findall(r"
$$
Request URI: .*?=(\d+)%23
$$
", i, re.S)  # 提取ASCII码
        url_list = re.findall(r"
$$
Request URI: (.*?)
$$
", i, re.S)  # 提取完整URL
        
        if flag_number:
            print(url_list)
            number.append(flag_number[0])

print(number)
flag = ''
for i in number:
    flag += chr(int(i))  # ASCII转字符
print(flag)

6.3 脚本说明

  1. 使用正则表达式提取:

    • 注入URL中的ASCII码值
    • 完整的请求URL
  2. 处理流程:

    • 按顺序读取导出的文本文件
    • 提取所有成功的ASCII码值
    • 将ASCII码转换为对应字符
    • 拼接成完整字符串(flag)

0x007 关键注意事项

  1. 顺序问题:确保ASCII码按字符位置顺序排列,攻击通常从第1个字符开始依次测试
  2. 编码问题:注意URL编码(%23表示#),在正则表达式中需正确处理
  3. 内容长度:正确识别成功与失败响应的长度差异是关键
  4. 字符范围:ASCII码通常在32-126之间,超出范围可能是错误数据

0x008 扩展应用

  1. 可修改脚本处理其他形式的盲注,如时间盲注
  2. 可结合其他工具(如Burp Suite)进行更全面的分析
  3. 可扩展用于分析其他类型的SQL注入攻击

0x009 防御建议

  1. 使用参数化查询或ORM框架
  2. 实施输入验证和过滤
  3. 配置WAF(Web应用防火墙)
  4. 限制数据库用户权限
  5. 监控和记录可疑的数据库查询

通过以上步骤,可以有效地分析出攻击者通过SQL注入获取了哪些数据,并采取相应的防御措施。

Wireshark分析SQL注入攻击数据提取教学文档 0x001 概述 本教学文档将详细介绍如何通过Wireshark分析网络流量包,提取攻击者进行SQL注入时查询的数据内容。主要针对布尔盲注(Boolean-based Blind SQL Injection)场景进行分析。 0x002 准备工作 安装Wireshark网络分析工具 准备包含SQL注入攻击的流量包文件(.pcap或.pcapng格式) 了解基本的HTTP协议和SQL注入原理 0x003 流量包初步分析 3.1 过滤HTTP流量 在Wireshark中使用以下过滤表达式: 这将只显示HTTP协议的数据包。 3.2 识别注入点 观察HTTP请求中的URL参数,寻找可疑的SQL注入语句。例如: 这是一个典型的布尔盲注语句,特征包括: 使用单引号(')闭合原有查询 包含 and 逻辑运算符 使用 ascii() 和 substring() 函数 包含 select 子查询 0x004 分析注入技术 4.1 布尔盲注原理 攻击者通过构造条件语句,根据页面返回结果的真假来推断数据库信息。本例中: 测试 flag 表中 keyid 字段的第一个字符的ASCII码是否为32(空格) 通过不断调整ASCII码值(32-126)来逐个字符破解 4.2 注入语句解析 典型注入语句结构: 参数说明: {字符位置} :要测试的字符在字符串中的位置(从1开始) {ASCII值} :猜测的字符ASCII码值 0x005 区分成功与失败的注入 5.1 观察响应包差异 注入失败的响应包: 通常返回错误页面或默认内容 内容长度可能较短 注入成功的响应包: 返回正常页面内容 内容长度通常较长且固定 5.2 使用Wireshark过滤成功响应 根据内容长度过滤: (具体长度值需根据实际情况调整) 0x006 自动化提取注入数据 6.1 导出过滤结果 在Wireshark中应用过滤条件 导出为文本文件(如aa.txt) 6.2 编写Python解析脚本 6.3 脚本说明 使用正则表达式提取: 注入URL中的ASCII码值 完整的请求URL 处理流程: 按顺序读取导出的文本文件 提取所有成功的ASCII码值 将ASCII码转换为对应字符 拼接成完整字符串(flag) 0x007 关键注意事项 顺序问题 :确保ASCII码按字符位置顺序排列,攻击通常从第1个字符开始依次测试 编码问题 :注意URL编码(%23表示#),在正则表达式中需正确处理 内容长度 :正确识别成功与失败响应的长度差异是关键 字符范围 :ASCII码通常在32-126之间,超出范围可能是错误数据 0x008 扩展应用 可修改脚本处理其他形式的盲注,如时间盲注 可结合其他工具(如Burp Suite)进行更全面的分析 可扩展用于分析其他类型的SQL注入攻击 0x009 防御建议 使用参数化查询或ORM框架 实施输入验证和过滤 配置WAF(Web应用防火墙) 限制数据库用户权限 监控和记录可疑的数据库查询 通过以上步骤,可以有效地分析出攻击者通过SQL注入获取了哪些数据,并采取相应的防御措施。