本文仅作为技术讨论及分享,严禁用于任何非法用途。
前言
在WEB渗透中经常可以看到页面存在一次性token校验的情况,即请求包中包含token,而token值需通过其它页面获取,导致burpsuite抓包后无法重放。
开始
下面以一个简单例子来做个说明。目标网站如下,页面存在一个图片验证码,题目要求暴力破解得到账号密码。这题可以有多种方式实现,这里以burpsuite宏进行实验。
发现
- 目标URL为:
http://1.1.1.1/c/hdyzma/welcome.php,抓个包测试一下,发现其会对token参数校验,拒绝重放的数据包。![]()
![]()
- 在登陆页面
http://1.1.1.1/c/hdyzma/可发现token值:![]()
- 通过上面的发现,可以使用
burpsuite的宏功能自动把登陆页的token值抓取出来填入登陆请求
创建Macros
- 创建
Macros,获取token值![]()
- 在
Macro Recorder中选择包含要获取的token的页面![]()
- 配置
Macros![]()
![]()
用鼠标选中token值,burpsuite会自动填写开始标记以及结束标记,并且写上Parameter name为token,注意这里的参数名token是与要爆破页面里的token名称一致:![]()
定义Macro描述,方便区分:![]()
创建Session Handling Rules
然后在Session Handling Rules里面新建一条规则:
![]()
设置一个名字,这里叫update_token:![]()
选中刚刚录制好的宏,并且设置要更新的参数名,这里是token:![]()
然后是设置宏的影响范围,因为我们只需要暴力破解账号密码,所以
Tools Scope这里只选中Repeater、Intruder就行了,其它模块可根据实际需要勾选:![]()
暴力破解
- 回到
Repeater,点击Go重新发包,可以看到现在token参数会自动刷新:![]()
![]()
- 使用
Intruder暴力破解账号密码:![]()
因为多线程会同时刷新token,导致部分请求包拿到的token已经被刷新了,所以只能设置单线程跑:![]()
成功暴破得到账号admin/123456a![]()
题目源码
源码来自3sNwgeek,附上题目:https://github.com/3sNwgeek/BruteForc_test

















