pikachu暴力破解合集(含分析、验证与修复建议)


大家好,我是小城,一个刚刚起步的学渣,笨鸟先飞,可惜我领悟得太晚。但从现在开始,我会努力加油进取变强!


基于表单暴力破解

漏洞分析

在这里插入图片描述
看看后端实现逻辑:
接收前端post提交的username和password,在数据库做查询

“select * from users where username=? and password=md5(?)”,

也就是将输入的账号和md5加密后的密码跟数据库中所存在的数值进行查询。
bind_param该函数绑定了 SQL 的参数,且告诉数据库参数的值。 “ss” 参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。

若查询行数大于0,则 login success!否则,则输出username or password is not exists~

漏洞验证

在这里插入图片描述

进来就看到常威在打…

咳~进来就看到一个表单就这么摆在我面前,只有username和password,题目提示得很明显了,表单暴力破解!

话不多说,甘蔗!

随便输入一些账号密码,然后抓包看看是什么妖魔鬼怪

(图片)

可以看到,我们很轻松得就把这个包抓到手了,我们将它丢到intruder看看(右键即可看到 send to intruder,直接发送就好了)

(图片)在这里插入图片描述

嘿嘿,此时我们只需要保存账号和密码部分的爆破,其他清除即可。记得暴力破解方式要选择胶束炸弹,也就是Cluster bomb,这样才可以把我们输入的payload进行交叉爆破。
在这里插入图片描述

接着到playsload这里,将payload1,也就是我们要暴力破解的密码字典输入,这里我用的是常用的弱口令账号

admin
administrator
root
admin123
user
master
test
testadmin
tester
guest
siteadmin

payload2用的是top1000全国弱口令,http://www.yesck.com/down/TOP1000password.txt
在这里插入图片描述

在这里插入图片描述然后就可以看到已经在爆破了,用爆破出来的账号密码登录即可

在这里插入图片描述


验证码绕过(on server)

漏洞分析

在这里插入图片描述
这部分表单的基础上加上了字母和数字结合的验证码,真的是奸诈小人,换汤不换药

来,让俺们来look look它后端的实现逻辑:

用户名、密码、验证码都不为空的前提下,加入了验证码验证机制

在这里插入图片描述代码通过判断strtolower($_POST[‘vcode’]和 strtolower( $_SESSION[‘vcode’])是否相等。
验证完成后,并没有及时销毁 $_SESSION[‘vcode’],这才导致了输入一遍验证码,爆破用户名和密码就可以爆破成功。
在这里插入图片描述
接下来我们看看验证码是怎么实现的,验证码由后端showvcode.php文件产生,且onclick点击图片会自动刷新。

再跟进下showvcode.php,看看showvcode.php里面有些啥子东西
在这里插入图片描述

可知道$_SESSION[‘vcode’]=vcodex(), $_SESSION[‘vcode’]是有vcodex()函数产生赋值的。那vcodex()又是什么呢?

带着这个疑问接着往下看又发现了一个function.php,看一下里面的验证码实现
在这里插入图片描述
正好发现了vcodex()函数
可以知道其实验证码就是随机在小写的英文字母和数字0-9里面取六个数组成。

至此,其实思路已经很明朗了,burp重复发包,并没有刷新页面,意味着
$_SESSION[‘vcode’] 一直是第一次产生的值,则strtolower( $_POST[‘vcode’]) 和 strtolower( $_SESSION[‘vcode’])一直相等,这为爆破提供了条件。而正常的逻辑中,应该在验证完一次后就销毁( $_SESSION[‘vcode’]变量,产生一个新的 $_SESSION[‘vcode’] 。

漏洞验证

话不多说,甘蔗!

首先随便输入一个账号密码,验证码输入个正确的选项然后抓包,
在这里插入图片描述

发现即使你重复放包,只要页面不刷新或者不去点击验证码,那么验证码一直都会说初始的那个值。

那么问题就回到了原来第一题破题的思路,只要把验证码定死在那个设定的值,剩下的只需要破解账号和密码即可!

按照第一题的步骤顺下去就好了,顺利login success!

验证码绕过(on client)

漏洞分析

我们还是来先看它的源码构成:
在这里插入图片描述

后端部分只是做了简单的表单验证,没有做任何的过滤措施,也就是第一题的判断逻辑。
在这里插入图片描述

在这里插入图片描述

那么让我们看看它在前端都写了些什么东西
可以看到,验证码是有数字和26个大写字母组成
在这里插入图片描述

表单提交时前端先做验证,若validate()函数返回值为true,表单才会提交。验证条件即为验证码框里填写的字符串是否和createCode()函数产生的一样。把验证机制交给前端是不安全的,输入一遍正确的验证码即可爆破用户名和密码,甚至注销掉表单提交时的验证函数等等,黑客可以轻松绕过,这为爆破提供了条件。

漏洞验证

这个只需要输入一次正确的验证码然后抓包,然后仿造上面的步骤重新来一次爆破即可。

值得注意的是,此时的验证码不需要再改,就算你输入错误的验证码也能正常放包不会报错。

token防爆破

漏洞分析

在这里插入图片描述
这个是token防爆破,老规矩,先来审一审源码写的到底是些啥东西
在这里插入图片描述后端的实现逻辑:验证条件为 $_POST[‘token’]== $_SESSION[‘token’],我们看看这两个值是怎么产生的。
在这里插入图片描述
在这里插入图片描述

$_SESSION[‘token’]是加载页面就产生的,通过set_token()函数,这个函数将 $_SESSION[‘token’]赋值为当前的微妙时间+一个五位数的前缀。

在这里插入图片描述

而 $_POST[‘token’]是嵌在前端隐藏的一个input里, $_POST[‘token’]就 等 于 _POST[‘token’]就等于 $_POST[‘token’]就等于_SESSION[‘token’]。
由以上可以知道,token是一直变化的,这为爆破提供了难度,但是不管怎样,token值既然已经返回到前端,就可以得到返回的token值进行爆破。

漏洞验证

在这里插入图片描述

还是跟之前的步骤一样,随便输个账号密码然后抓包。
token爆破还是比较适合运用于知道账号,爆用户的密码。
这里我们先假设它的账号是admin吧。
在这里插入图片描述

抓到包之后将它发送到爆破那里去,注意这里爆破方式要选择 Pitch fork
在这里插入图片描述

接着到option 那里将线程改一下,改成1,因为一个token对应一次爆破。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

再到grep - extract那里点击add ,然后fetch response ,选中token的值,burpsuite会帮你自动补齐
在这里插入图片描述在这里插入图片描述

在payload这里,payload1我们选择弱口令top1000就好了
payload2我们选择Recursive grep,然后下面的request填上我们前一次获取到的token,开始爆破

在这里插入图片描述

我们可以看到,密码已经成功爆破出来了,正是123456

黄色框框也可以分析到,每一次后面的value值都跟下一次的payloads值一样,这样才能保证我们的token对应得上不会报错

漏洞修复建议

修复建议:
1.登陆错误次数过多锁定账户
2.登陆错误次数过多锁定ip
3.验证码,记得及时刷新
4.不易自动识别的验证码,比如中文汉字,移动滑块,点击字母等等

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值