pikachu验证码绕过

pikachu

验证码绕过(on server)

什么也不填,点击Login:用户名不能为空。

随意输入uesrname和password:验证码不能为空。

三项随便填:验证码输入错误。

验证码输入正确,两项输入错误:username or password is not exits~。

提示显示验证码一直有效,但正常情况来看,验证码一直在变。

burp拦截,

点击Login时右键send to Repeater发送至Repeater:

image-20220901212115830

​ 上方vcode就是验证码一栏,检测验证码是否存在不过期问题

​ 验证码输入正确,第一次显示username or password is not exists

image-20220902092505196

​ 第二次验证码还是原来的验证码,但修改username 或着password,正常情况是验证码会刷新,然后显示验证码输入错误,测试发现,提交之后的结果依然是username or password is not exists:

image-20220902093307968

​ 上面出现不正常情况说明出现验证码出现不过期问题,可以发送请求至Intruder进行暴力破解,破解步骤和上一则博客步骤一样,也就是验证码不变。

不安全的验证码-on server常见问题:

  • 验证码在后台不过期,导致长时间可以被使用;
  • 验证码校验不严格,逻辑出现问题;
  • 验证码设计的太过简单和有规律,容易被猜测。
由于没有具体的引用内容,以下基于一般的知识来分析pikachu靶场中可能与`onclick`(推测你想说的是`onclick`而不是`onclien`)相关的验证码绕过问题及解决方案。 #### 问题产生原因 在pikachu靶场这类安全测试环境中,验证码的作用是防止自动化脚本恶意操作。但当验证码相关逻辑与`onclick`事件存在漏洞时,就可能被绕过。比如,前端`onclick`事件处理函数可能没有正确验证验证码,或者验证码的验证逻辑完全依赖前端,没有在后端进行二次验证。 #### 常见绕过方式及解决方案 ##### 前端验证绕过 - **现象**:验证码的验证逻辑仅在前端`onclick`事件中实现,开发者在按钮的`onclick`事件处理函数里检查验证码是否正确,如果正确则提交表单。攻击者可以通过修改前端代码绕过这个验证。 - **解决方案**:验证码验证必须在后端进行。前端`onclick`事件可以做一些简单的格式检查,但最终的验证要依赖后端。以下是示例代码: **前端代码(HTML + JavaScript)** ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <form id="myForm" action="backend.php" method="post"> <input type="text" id="captcha" name="captcha" placeholder="输入验证码"> <button type="button" onclick="checkForm()">提交</button> </form> <script> function checkForm() { // 简单的格式检查 var captcha = document.getElementById('captcha').value; if (captcha.length === 0) { alert('请输入验证码'); return; } document.getElementById('myForm').submit(); } </script> </body> </html> ``` **后端代码(PHP)** ```php <?php session_start(); if ($_SERVER["REQUEST_METHOD"] == "POST") { $userCaptcha = $_POST["captcha"]; $correctCaptcha = $_SESSION["captcha"]; if ($userCaptcha === $correctCaptcha) { // 验证码正确,处理业务逻辑 echo "验证码验证通过"; } else { echo "验证码错误"; } } ?> ``` ##### 验证码重用绕过 - **现象**:在`onclick`事件触发后,验证码没有被及时更新,攻击者可以多次使用同一个有效的验证码进行提交。 - **解决方案**:每次验证码被使用后,在后端立即更新验证码。例如在PHP中,生成新的验证码并更新`$_SESSION`中的值。 ```php <?php session_start(); // 生成新的验证码 $newCaptcha = generateCaptcha(); $_SESSION["captcha"] = $newCaptcha; function generateCaptcha() { // 生成验证码的逻辑 $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $captcha = ''; for ($i = 0; $i < 6; $i++) { $captcha .= $characters[rand(0, strlen($characters) - 1)]; } return $captcha; } ?> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值