Pikachu漏洞平台练习

一、验证码绕过(on server)

直接抓包可以看到(vcode=edo)存在逻辑判断。

 拿到源码分析:

if(isset($_POST['submit'])) {
    // 检查用户名是否为空
    if (empty($_POST['username'])) {
        $html .= "<p class='notice'>用户名不能为空</p>";
    } else {
        // 检查密码是否为空
        if (empty($_POST['password'])) {
            $html .= "<p class='notice'>密码不能为空</p>";
        } else {
            // 检查验证码是否为空
            if (empty($_POST['vcode'])) {
                $html .= "<p class='notice'>验证码不能为空哦!</p>";
            } else {
                // 验证验证码是否正确
                if (strtolower($_POST['vcode']) != strtolower($_SESSION['vcode'])) {
                    $html .= "<p class='notice'>验证码输入错误哦!</p>";
                    // 应该在验证完成后,销毁该$_SESSION['vcode']
                } else {
                    // 用户名、密码和验证码均合法,进行数据库查询
                    $username = $_POST['username'];
                    $password = $_POST['password'];
                    $vcode = $_POST['vcode'];
                    
                    $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()==1){
                            $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>';
                    }
                }
            }
        }
    }
}
if (strtolower($_POST['vcode']) != strtolower($_SESSION['vcode'])) {
                    $html .= "<p class='notice'>验证码输入错误哦!</p>";
                    // 应该在验证完成后,销毁该$_SESSION['vcode']

验证码正确正常传参,由于在验证完成后SESSION['vcode']并未销毁,我们于是就有了很明显的思路,确保验证码的正确值,对账户账号密码进行爆破。

漏洞利用:

用burpsuite抓包,将vcode的验证码固定:

再进行暴力破解:(这里随便写了几个弱口令,主要为了演示)

验证一下:拿下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zTale

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

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

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

打赏作者

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

抵扣说明:

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

余额充值