Pikachu漏洞练习平台----验证码绕过(on server) 的深层次理解

在这里插入图片描述
其实这是一道很简单的题,题目中也给了提示:
在这里插入图片描述
提示的意思是验证码不会变,结合网上的一些解析也是对此直接默认了,但是这个验证码是怎么不变的,没有看到有人细说,也许这些思考对于一些人来说已经微不足道了,但是结合一些搭建网站前后端的知识,我想从一个初学者的角度更深层次的解释一下这个问题。
——————————————————————————————

解题方法

在这里插入图片描述
爆破是基于上一题对于用户名密码的简单爆破,这题关键在于有了验证码。
初步的试探一下,如果输错了验证码,不管用户名密码是什么,都会显示“验证码输入错误哦!”,然后验证码会刷新
输入错误验证码
显示相应文字
而把验证码输入正确,用户名密码不正确,就会显示“username or password is not exists~”,然后验证码也会刷新
正确输入了验证码
显示不同的文字
所以总结一下网站的展现的表象,这个验证码在两种情况下会变,第一种情况是刷新页面的时候,第二种情况是点击验证码图片的时候。

然后打开burpsuite按照正常顺序,打开代理,输入用户名、密码、验证码,点击“Login”,然后发的请求就会被burpsuite捕获到。
在这里插入图片描述
发现这个请求是POST,然后一共有四个参数分别是 username password vcode submit
其中submit是前端代码中在“Login”按钮里写死的

<input class="submit" name="submit" type="submit" value="Login">

而username与password是需要爆破的,所以想着这个vcode先不让他变,把这个请求送到Repeater里面去,先改变用户名和密码看一看响应的回来代码的变化,尤其是“Login”按钮下面那一行小字,看看是返回的文字是验证码不对还是用户名密码不对。
于是在Repeater中如下操作:
在这里插入图片描述
在左面的请求中,用户名、密码改成222,验证码(vcode)是正确的,只不过刷新了页面不是原来的验证码了。
在右面的响应中,在html代码中找到那个“Login”按钮,下面显示的是用户名密码不对。
如是再更改几次用户名密码,验证码vcode不改变,结果还是显示用户名密码不对,说明验证码一直是对的。
由此就知道了,在burpsuite里面操作这期间,没有碰浏览器,验证码一直是没有变的。
所以此时把请求发送到intruder来进行爆破,由于是用户名和密码两个参数的爆破,需要选择pitchfork模式,将username和password添加进参数。
在这里插入图片描述
分别为用户名和密码选择爆破字典,然后进行爆破。
在这里插入图片描述
在这里插入图片描述
这里字典简单了些,就是为了做题。
结果如下:
在这里插入图片描述
然后发现admin和123456组合的响应报文长度不一样,点进去看发现他是“login success”字样,所以比别的“username or password is not exists~”字样会少一点字。
在这里插入图片描述
到此这道题就做完了。

深度思考

那为啥这个验证码当时在burpsuite里就不变呢?单单的试一试发现他不变有点瞎猫碰死耗子的侥幸,感觉这道题和闹着玩一样。但其实仔细深究的话,这里面知识还是不少的。
这个pikachu平台我是搭建在自己电脑上的,随时可以看源代码,这个问题的答案就是藏在源代码里,所以就先细细的分析一下代码。

首先要知道一个事情,这个网站由php、html、js等代码写成的,php属于后端代码,由服务器来解析运行;html、js是前端代码,在浏览器(客户端)来解析运行。所以在网页中右键,再点击查看网页源代码之后,能看见的只有html和js代码,以及php代码运行过之后对html代码的一些更改、添加等效果。要是想看后端的php代码就要去本地文件夹中去看。
查看浏览器中的验证码图片这个区域的源代码(对应的后端文件是bf_server.php),观察到img标签中的src指向showvcode.php;后面的onclick事件是对于showvcode.php的重新请求,后面用get方法传日期那个没有用,后面代码可以看出来。
在这里插入图片描述
在本地文件中找到这个文件,这是pikachu作者的源文件:
showvcode.php

<?php 
session_start();
include_once 'function.php';
//$_SESSION['vcode']=vcode(100,40,30,4);
$_SESSION['vcode']=vcodex();
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值