DVWA Brute Force(暴力破解)Low/Medium/High 完整攻击流程

DVWA Brute Force(暴力破解)Low/Medium/High 完整攻击流程 前置基础访问路径DVWA→Brute Force登录表单账号密码GET传参usernamepasswordLoginLogin核心逻辑后端直接拼接SQL查询无验证码、无登录失败锁定可批量字典爆破账号密码切换安全等级DVWA Security 切换 Low / Medium / High工具Burp Suite主流、手工测试、Python脚本一、Low 级别暴力破解无任何防护最简单low.php 源码分析$user $_GET[username]; $pass $_GET[password]; $query SELECT * FROM users WHERE user$user AND password$pass; $db mysqli_query($GLOBALS[___mysqli_ston], $query); if( mysqli_num_rows($db) 1 ){ echo preWelcome to the password protected area admin/pre; }else{ echo preUsername and/or password incorrect./pre; }漏洞点直接拼接用户输入字符型SQL注入无验证码、无请求频率限制、无IP锁定仅通过页面文字区分成功/失败。攻击步骤Burp Intruder 爆破步骤1抓包登录请求浏览器随便输入账号密码点击 LoginBurp拦截请求完整数据包GET /DVWA/vulnerabilities/brute/?usernametestpassword123LoginLogin HTTP/1.1 Host: 127.0.0.1 Cookie: PHPSESSIDxxx; securitylow步骤2发送到 Intruder右键 → Send to IntruderPayload Positions 自动标记username和password两个参数。步骤3Payload 设置两种爆破方案方案1已知用户名 admin只爆破密码推荐清除username标记固定值adminpassword加载密码字典123456、password、admin、dvwa等弱口令Attack typeSniper单字典遍历。方案2同时爆破账号密码Attack typeCluster bomb分别加载用户字典、密码字典。步骤4启动爆破判断成功包爆破完成后看响应长度/页面内容失败包页面包含Username and/or password incorrect.成功包页面包含Welcome to the password protected area admin筛选长度不同的请求得到正确密码默认admin密码password。Low 额外漏洞结合SQL注入直接绕过登录payload用户名输入admin#密码任意SQL拼接后SELECT * FROM users WHERE useradmin# AND passwordxxx注释后半段密码判断直接登录成功无需爆破。二、Medium 级别暴力破解增加简单过滤延时medium.php 源码防护点$user mysqli_real_escape_string($db, $_GET[username]); $pass mysqli_real_escape_string($db, $_GET[password]); // 登录失败延时2秒 sleep(2);防护mysqli_real_escape_string转义单引号无法SQL注入绕过登录登录错误强制sleep(2)大幅拉长爆破时间无验证码、无锁定依然可以暴力破解。攻击流程抓包方式和Low完全一致不能使用注入payloadIntruder爆破不变仅爆破速度变慢每失败请求等待2秒识别成功响应依旧依靠页面Welcome关键字优化技巧缩小密码字典只使用高频弱口令减少请求次数。三、High 级别暴力破解Token CSRF防护核心难点high.php 源码新增防护依旧转义字符禁止SQL注入增加CSRF tokenuser_token每次请求token值动态变化每次提交必须携带当前页面token固定数据包直接重放会失效错误登录依旧sleep延时2秒。请求新增参数user_token随机值完整参数usernamexxxpasswordxxxLoginLoginuser_tokenxxxxBurp自动处理Token爆破完整步骤步骤1抓包登录请求发送到Intruder三个参数username、password、user_token三个变量位置。步骤2Payload Type 设置为 Pitchfork步骤3配置 Payload 3token自动获取Payload set 3 选择Recursive grep递归提取token打开 Options → Grep - Extract添加提取规则正则匹配页面隐藏表单tokenuser_token value(.*?)设置页面刷新请求每次爆破前先GET登录页抓取最新token再提交登录。步骤4Payload1填固定adminPayload2加载密码字典启动攻击工具会自动访问页面获取新token携带新token提交账号密码循环爆破识别成功页面。手工替代方案Python脚本自动获取token爆破逻辑requests.get 访问 brute页面正则提取user_token携带token、用户名、密码发送GET登录请求判断返回页面是否包含Welcome循环遍历密码字典。四、Impossible 级别无法爆破防御满分对比参考源码防护机制强密码哈希存储加盐md5($salt . $pass)登录失败计数器5次错误直接锁定账号15分钟复杂CSRF token使用预处理SQL语句杜绝注入无任何可利用漏洞无法暴力破解。五、三级等级核心对比表等级注入绕过延时限制CSRF Token爆破难点Low支持单引号注入直接登录无sleep无无爆破速度最快Medium转义引号注入失效sleep(2)无爆破速度慢只能纯字典跑High注入失效sleep(2)动态token必须自动抓取token配置复杂Impossible完全防护5次锁定高强度token无法爆破六、实战常见问题High级别爆破全部失败未配置递归抓取token旧token失效Medium爆破速度极慢sleep(2)强制延时减少字典数量Low注入payload无效安全等级切错当前是Medium/HighCookie丢失导致失效Burp开启Redirect automatically保持PHPSESSID会话。七、防御暴力破解方案登录失败次数限制短期锁定账号图形验证码/短信验证码后端加盐哈希存储密码禁止明文CSRF随机Token防护异常高频请求WAF拦截使用预处理SQL防止注入绕过登录后台登录IP白名单。