首先先看一下token验证的基本机制
1、当客户端第一次请求时,发送用户信息至服务器(用户名、密码),服务器对用户信息使用HS256算法及密钥进行签名,再将这个签名和数据一起作为Token一起返回给客户端
2、服务器不保存Token,客户端保存Token(比如放在 Cookie 里或者 Local Storage 里)
3、当客户端再次发送请求时,在请求信息中将Token一起发给服务器
4、服务器用同样的HS256算法和同样的密钥,对数据再进行一次签名,和客户端返回的Token的签名进行比较,如果验证成功,就向客户端返回请求的数据
在了解了之后我们来提交一次看看。

发现这个请求包里有一个token。
我们尝试修改密码再次提交
提示token错误。
结合上面token的原理和实践发现,token是每次提交都会发生变化的,并且存在于服务器端发送的相应包里,所以如果想进行爆破的话,那么就需要每次从上一个响应包中获取新的token,并再次提交。
那么思路就是这个思路。
接下来的操作如下

选择叉子模式,因为很明显每一次的密码和token是同时变化的,按组进行爆破(假设用户名就是admin,事实上好像不是来着,我忘了,反正很难爆破出来的)
在爆破点1这里就用普通的简单字典就好:

在爆破点2我们选择的是递归类型,因为每一次都要从上一次的响应包中获取。

在这里选择add

选中token的位置

同时把这个token复制作为初始值粘贴到这里

然后再对引擎进行设置,把并发线程改为1,因为一个token对应一次尝试

再在重定向这里选择永远跟随

然后就可以啦!
本文系作者原创,若有错误恳请斧正,不胜感激。
本文深入解析Token验证的基本机制,包括客户端与服务器之间的交互流程,以及如何利用Token进行密码修改和爆破攻击的防御策略。
1810

被折叠的 条评论
为什么被折叠?



