pikachu靶场_验证码绕过

验证码的认证流程

先对验证码的验证流程搞懂

客户端会request登录页面,后台会生成验证码:
第一步:后台使用算法生成图片,并将图片response到客户端
第二步:同时将算法生成的值全局赋值到SESSION中
第三步:客户端将认证信息和验证码一起提交
第四步:后台会对提交的验证码与SESSION里面的值进行比较
(如果客户刷新页面,再次生成验证码)

验证码绕过-on client(客户端)

我们首先输入用户名和密码
在这里插入图片描述
将抓到的包发送到Repeater,点击GO重发
发现它提示我们用户名或密码错误
在这里插入图片描述
这里我们来试着,改一下验证码,或者直接不输入,看看会返回什么东西
在这里插入图片描述

通过burp抓到的返回包来看,我们发现不管在后台怎么修改验证码,它都会提示用户名和密码错误,可见,验证码是通过js来实现的࿰

以下是一个基于 PHP 语言实现的验证码防御机制示例代码,可以在Pikachu靶场中使用: ```php <?php session_start(); // 开启会话 // 判断请求是否为POST请求 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 获取表单数据 $username = $_POST['username']; $password = $_POST['password']; $captcha = $_POST['captcha']; // 判断验证码是否正确 if (strtolower($captcha) !== strtolower($_SESSION['captcha'])) { echo '验证码错误!'; exit; } // TODO: 进行登录验证 } else { // 生成验证码图片 $image = imagecreatetruecolor(100, 30); $bgcolor = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bgcolor); // 生成随机验证码 $captcha = ''; for ($i = 0; $i < 4; $i++) { $fontsize = 6; $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120)); $fontcontent = rand(0, 9); $captcha .= $fontcontent; $x = ($i * 100 / 4) + rand(5, 10); $y = rand(5, 10); imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } // 保存验证码到会话中 $_SESSION['captcha'] = $captcha; // 输出验证码图片 header('Content-Type: image/png'); imagepng($image); // 销毁图片资源 imagedestroy($image); } ``` 上述代码中,首先通过 `session_start()` 开启会话,然后判断请求是否为POST请求。如果是POST请求,就获取表单数据,然后判断验证码是否正确,如果验证码不正确,直接输出错误信息。如果验证码正确,则进行登录验证,这部分代码需要根据具体情况进行实现。 如果请求不是POST请求,就生成验证码图片,并将验证码保存到会话中,然后将验证码图片输出给客户端。客户端在提交登录表单时,需要同时提交验证码。 这种基于服务器端的验证码防御机制,可以有效防止自动化程序对表单进行暴力破解攻击。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值