写点什么

dvwa 通关记录 1 - Vulnerability: Brute Force

作者:Todd-Lee
  • 2022 年 8 月 01 日
  • 本文字数:1074 字

    阅读完需:约 4 分钟

Security Level: low

源代码:

<?php
if( isset( $_GET[ 'Login' ] ) ) { // Get username $user = $_GET[ 'username' ];
// Get password $pass = $_GET[ 'password' ]; $pass = md5( $pass );
// Check the database $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
if( $result && mysqli_num_rows( $result ) == 1 ) { // Get users details $row = mysqli_fetch_assoc( $result ); $avatar = $row["avatar"];
// Login successful echo "<p>Welcome to the password protected area {$user}</p>"; echo "<img src=\"{$avatar}\" />"; } else { // Login failed echo "<pre><br />Username and/or password incorrect.</pre>"; }
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);}
?>
复制代码

从源代码来看,明显是有 sql 注入的。因为考察的是爆破,那么先爆破。

用户名字典和密码字典是必不可少的,github 一搜一堆。

主要步骤

  1. Proxy 挂代理或者直接用内置浏览器,开拦截

  2. 随便输入账号密码,点登陆

  3. Burp 中拦截到,发送到 Intruder 中

  4. clear 掉所有的变量,然后给 username,password 挂上变量。

  5. 接下来重头戏,介绍下 Attack Type

  6. Sniper 人如其名,狙击手模式,一次干一个地方。所以两个变量不适合这种情况,当然了,如果你已知账号或者已知密码,就只加一个变量,用这个模式最合适。此时只需要一个 payload。

  7. Battering Ram 攻城锤模式,只需要一个 payload,挂一个字典,你有几个变量就都用同样的值。例如你 字典有一行是 admin ,那么就一定有一条 username=admin&password=admin 的请求放出去。

  8. Pitchfork 叉子模式(没错就是海王那个叉子),此时需要多个 payload,正常我有两个变量,就要两个 payload,然后 burp 会从第一个 payload 拿出第一个,第二个 payload 拿出第二个作为参数发出去。所以请求次数是最小的 payload 的条数。

  9. Cluster bomb 集束炸弹,这个最暴力,其实就是两个字典的笛卡尔积,也需要多个 payload,假设用户名字典有 5 个,密码有 100 个,那么就会有 500 次请求。

  10. 设置后好之后就可以发动攻击啦。


其他部分用视频录制的方式记录吧。


发布于: 刚刚阅读数: 2
用户头像

Todd-Lee

关注

还未添加个人签名 2017.10.17 加入

还未添加个人简介

评论

发布
暂无评论
dvwa 通关记录1 - Vulnerability: Brute Force_渗透测试_Todd-Lee_InfoQ写作社区