靶场介绍
Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。
靶场安装
https://github.com/zhuifengshaonianhanlu/pikachu
暴力破解
基于表单的暴力破解
随便输内容,抓包
设置payload点,使用cluster bomb组合方式最多
准备好字典
按length排序,长度不同的即为正确用户名密码
验证码绕过(on server)
源码
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>';
}
可以看到验证码在判断完之后不会销毁,而是在页面刷新之后验证码才会刷新
只要我使用bp的重放攻击,页面是不会刷新的,那样就可以重复利用该验证码
验证码不用设置payload点,与当前页面显示的相同即可
检测出两个用户
用户test登录成功
验证码绕过(on client)
源码
前端进行检测验证码,后端检验用户名和密码,那就表示当你点击Login的时候,用户名和密码正确就能登录成功,验证码就如同虚设,不信?往下看
这里输入的验证码要跟图片的一样,先过了前端检测才能抓到数据包,不然前端验证码检测没过他会弹窗,导致数据包无法抓取,也就不能暴力破解
抓取到数据包之后,我故意将验证码随意修改,反正发到后端也不会检测
一样的payload点
成功爆破出用户名和密码
token防爆破?
这题跟dvwa的一样
服务器新增检测条件token,客户端每次访问都必须带着服务器下发的token,否则登录失败。
1.抓包
2.攻击方式设置未pitchfork,payload点自己按照各自的规则跑
3.token payload点设置未递归查询
4.线程设置为1个,防token不相同
5.每次都要抓取token值,用在token payload点
6.寻找token的位置并选定
7.成功爆出密码