一、攻击模块1:Brute Force(暴力破解)

暴力破解一般指穷举法,穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。

 

 

 

二、源码分析(文件地址:./DVWA/vulnerabilities/brute/source/low.php)

 

  1. <?php
  2. if( isset( $_GET[ 'Login' ] ) ) {
  3. // Get username
  4. $user = $_GET[ 'username' ];
  5. // Get password
  6. $pass = $_GET[ 'password' ];
  7. $pass = md5( $pass );
  8. // Check the database
  9. $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
  10. $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>' );
  11. if( $result && mysqli_num_rows( $result ) == 1 ) {
  12. // Get users details
  13. $row    = mysqli_fetch_assoc( $result );
  14. $avatar = $row["avatar"];
  15. // Login successful
  16. echo "<p>Welcome to the password protected area {$user}</p>";
  17. echo "<img src=\"{$avatar}\" />";
  18. }
  19. else {
  20. // Login failed
  21. echo "<pre><br />Username and/or password incorrect.</pre>";
  22. }
  23. ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
  24. }
  25. ?>

通过观察这个模块的源代码,可以看到,这是一个典型的万能密码。

三、实战爆破

1.我们首先配置好burpsuite的本地代理。

在Login中输入用户名与密码

然后用burpsuite进行拦截

2.将表单进行提交到intruder模块,并将password设置为我们破解的payload

然后在Position选项中设置需要破解的变量。Burpsuite会自动设置许多变量,单击“Clear”按钮,把默认变量全部清除,然后选中密码123,单击“Add”按钮将之设为需要破解的变量。

3.设置字典文件。

3.1.使用自带的字典

3.2.加载外部字典

点击Load,选择字典文件路径

4.开始枚举,得到密码。

Burp suite攻击类型:

第一种:
Sniper标签 这个是我们最常用的,Sniper是狙击手的意思。这个模式会使用单一的payload【就是导入字典的payload】组。它会针对每个position中$$位置设置payload。这种攻击类型适合对常见漏洞中的请求参数单独地进行测试。攻击中的请求总数应该是position数量和payload数量的乘积。

第二种:
Battering ram – 这一模式是使用单一的payload组。它会重复payload并且一次把所有相同的payload放入指定的位置中。这种攻击适合那种需要在请求中把相同的输入放到多个位置的情况。请求的总数是payload组中payload的总数。简单说就是一个playload字典同时应用到多个position中

第三种:
Pitchfork – 这一模式是使用多个payload组。对于定义的位置可以使用不同的payload组。攻击会同步迭代所有的payload组,把payload放入每个定义的位置中。比如:position中A处有a字典,B处有b字典,则a【1】将会对应b【1】进行attack处理,这种攻击类型非常适合那种不同位置中需要插入不同但相关的输入的情况。请求的数量应该是最小的payload组中的payload数量

第四种:
Cluster bomb – 这种模式会使用多个payload组。每个定义的位置中有不同的payload组。攻击会迭代每个payload组,每种payload组合都会被测试一遍。比如:position中A处有a字典,B处有b字典,则两个字典将会循环搭配组合进行attack处理这种攻击适用于那种位置中需要不同且不相关或者未知的输入的攻击。攻击请求的总数是各payload组中payload数量的乘积。

1.第一种Sniper

破解时间的长短就取决于密码字典的大小和CPU的计算能力,破解完成后,可以通过length的不同找到正确的密码。

 

4.第四种

输入任意用户名和密码看返回的错误提示,记着错误的提示

记下 Username and/or password incorrect.后面配置burpsuite时要用,burpsuite代理设置好,再次任意输入用户名和密码,burpsuite拦截后把数据发到intruder功能下。然后在positions下选择攻击类型 Cluster bomb

在payload sets中,分别设置Payload set 1 和 Payload set 2 对应用户名与密码字典

然后options下,Grep-Match中添加 Username and/or password incorrect

点击intruder下拉栏的start attack即可

最新文章

  1. 解决WAMP搭建PHP环境后后局域网其他机器无法访问的问题
  2. Spring day04笔记(SVN讲解和回顾昨天知识)
  3. POJ 3299 Humidex 难度:0
  4. 浅议tomcat与classloader
  5. 基于XMPP的即时通信系统的建立(五)— openfire
  6. POJ3259——Wormholes(Bellman-Ford+SPFA)
  7. BZOJ1345: [Baltic2007]序列问题Sequence
  8. Linux网络编程-----Socket地址API
  9. 用户管理_组管理_设置主机名_UGO_文件高级权限_ACL权限
  10. 我的MYSQL学习心得(十一)
  11. 学习Object.assign()
  12. 关于信息系统设计与开发——案例:VIP系统
  13. 《MySQL必知必会》[07] 管理事务处理
  14. easyui---表单验证
  15. Codeforces Round#413 Div.2
  16. JAVA 判断字符串是否可转化为JSONObject、JSONArray
  17. Gradle入门(1):安装
  18. 微服务架构之spring cloud 介绍
  19. ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)
  20. Android studio DrawerLayout

热门文章

  1. soj#547 bzoj5046 分糖果游戏
  2. MongoDB拥有SSD秒杀高富帅使用过程分享
  3. b/s 起点
  4. java中四种访问修饰符区别及详解全过程
  5. Redis初阶
  6. QTP加载第三方DLL(C#)实现清除IE缓存(转)
  7. Java并发AtomicLongArray类
  8. sublime中使用插件anaconda而在代码中出现方框
  9. 51.Lowest Common Ancestor of a Binary Tree(二叉树的最小公共祖先)
  10. 从OLLVM4.0.0升级到LLVM8.0.1,并且给LLVM增加Pass 插件系统