pikachu上的密码口令暴力破解

本文深入探讨了暴力破解的概念,包括在CTF中常见的情景,以及如何通过增强验证码、设置登录限制等方法进行防范。同时,文章详细分析了前端和后端的各种漏洞,如无防护、验证码缺陷和Token机制的使用。通过实例解析了不同场景下的暴力破解过程,展示了如何利用Burpsuite进行爆破测试。最后,讲解了Token在防止CSRF攻击中的作用,但并不能阻止暴力破解。整体内容旨在提升网络安全意识和防护能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)暴力破解是什么

暴力破解在ctf中是归于密码口令里的知识,暴力破解常用于破解用户名或者密码,通过脚本不断的尝试可能的密码类型。类似nmap这一类工具,爆网站的目录的时候也是通过这种逻辑,用各种常用路径的尝试暴力破解文件网站的路径的。

(2)暴力破解的一般防范方法

  • 1、设计更难得验证码
  • 2、后端主要不要有逻辑上的漏洞(不要将验证码以文本得形式以各种方法返回给前端,或者出现输入不同错误导致返回有什么明显不同)
  • 3、php.ini设置合理且注意用完验证码之后就要被销毁
  • 4、设置失败登录限制,登录失败次数太多就要被限制一段时间之后再登录

(3)前后端常见的漏洞

<0>无防护下的暴力破解

拿pikachu上的 ‘ 基于表单的暴力破解 ’ 举例

【源码分析】
打开“基于表单的暴力破解”模块鼠标右键打开菜单,点击查看源码,会发现没有设置javascript代码做验证码防护,再打开后端的bf_form.php文件,审计后端源码,如下图:

if(isset($_POST['submit']) && $_POST['username'] && $_POST['password']){
    $username = $_POST['username'];
    $password = $_POST['password'];
    $sql = "select * from users where username=? and password=md5(?)";
    $line_pre = $link->prepare($sql);
    $line_pre->bind_param('ss',$username,$password);
    if($line_pre->execute()){
        $line_pre->store_result();
        if($line_pre->num_rows>0){
            $html.= '<p> login success</p>';
        } else{
            $html.= '<p> username or password is not exists~</p>';
        }
    } else{
        $html.= '<p>执行错误:'.$line_pre->errno.'错误信息:'.$line_pre->error.'</p>';
    }
}

代码做了这么几件事

  • 1、将传过来的username和pasword分别赋值给$username$password
  • 2、进行sql预编译(上面的函数中没有相应的$link代码,其实在这之前有$link=connect();这个语句才能用prepare方法进行预编译)
  • 3、用bind_param方法将$username$password变量传入sql语句中(bind_param中的第一个参数是按照顺序对输入的变量做声明类型的,比如有s–string、d–double、i–integer、b–bool)
  • 4、后用store_result方法将执行之后的结果集转移,然后用num_rows看返回的结果集有几行,若大于零则返回’login success

从上面分析出代码对sql做了防范但是没有生成验证码的模块,也没有检验验证码的模块也就是说没有对暴力破解做防护。我们可以直接用burpsuite抓包之后用intruder模块进行爆破。

【操作步骤】

  • 1、首先输入一个随机的账户名和密码,作者这里的密码被我用开发者工具改了一下html不然密码会是一个个实心的黑弹弹
    在这里插入图片描述

  • 2、之后在inetcpl.cpl中设置代理,用burpsuite抓包
    在这里插入图片描述

  • 3、发送到intruder模块设置attack type类型为cluster bomb将默认的变量clear,然后加入新的变量。cluster bomb类型允许给不同变量设置不同的字典,且组合字典中的各种值。(下图和intruder模块没有任何关系,截图截错了)
    在这里插入图片描述

  • 4、在Payloads模块添加爆破的字典,下面要做的就是给第一和第二个变量分别甚至字典,有自己的字典的可以用add from list处添加或者修改payload type的类型为runting list都可以打开目录导入字典。笔者因为已经直到真正的密码是什么,所以没有导入,在simple list模式下添加了几个词段意思一下。
    在这里插入图片描述
    在这里插入图片描述

  • 5、之后点击start attack开始爆破,爆破完成之后会发现用户名为admin而密码为123456的返回长度和其它的完全不同,这就说明该结果为正确答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperForming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值