pikachu靶场教学之暴力破解

42 阅读5分钟

1.基于表单暴力破解

第一步:设置代理并抓包

打开bp工具,浏览器中设置好代理为burp,开启拦截,输入测试账号密码,点击登录,成功抓包

第二步:发送intruder模块

将数据包右键发送到intruder模块中,选择集束炸弹攻击类型(测试位置>1),先清空位置,在选中目标添加payload

第三步:设置payload参数

点击payload,设置第一个payload位置的参数,自定义输入可能的账号root admin......;第二个payload位置的参数,自定义输入可能密码password 123456......;然后点击开始攻击

第四步:爆破攻击结果

攻击结果中,点击长度,查看与其他数据包长度不同的那一条,就是正确的账号和密码。查看返回包可以发现,该返回结果为登陆成功

2.验证码绕过(on server)

第一步:设置代理并抓包

开启burp代理,输入测试账号密码,这里需要输入正确的验证码,开启拦截,登录,成功抓包

第二步:发送repeater模块

将抓到的数据包发送到repeater重放器当中,测试多次重放后,发现,验证码并未发生改变,说明输入错误并不会引起验证码的变化

第三步:发送intruder模块

将数据包发送到intruder攻击模块中,选择集束炸弹攻击类型,清空payload位置,然后选择测试的账号和密码进行添加payload,注意验证码无需爆破

第四步:设置payload参数

点击payload,设置第一个payload位置的参数,自定义输入可能的账号root admin......;第二个payload位置的参数,自定义输入可能密码password 123456......;然后点击开始攻击

第五步:爆破攻击结果

攻击结果中,点击长度,查看与其他数据包长度不同的那一条,就是正确的账号和密码。查看返回包可以发现,该返回结果为登陆成功,并且验证码依旧没有改变

3.验证码绕过(on client)

第一步:设置代理并抓包

打开bp工具,浏览器中设置好代理为burp,开启拦截,输入测试账号密码,这里输入错误的验证码,点击登录后,发现没有成功抓包,反而在前端页面中弹出提示框,说明是前端校验验证码,未经过后端

尝试输入输入正确的验证码,点击登录后,发现成功抓包

第二步:发送intruder模块

将数据包右键发送到intruder模块中,选择集束炸弹攻击类型(测试位置>1),先清空位置,在选中目标添加payload

第三步:设置payload参数

点击payload,设置第一个payload位置的参数,自定义输入可能的账号root admin......;第二个payload位置的参数,自定义输入可能密码password 123456......;然后点击开始攻击

第四步:爆破攻击结果

攻击结果中,点击长度,查看与其他数据包长度不同的那一条,就是正确的账号和密码。查看返回包可以发现,该返回结果为登陆成功

4.token防爆破

1.token的基本知识

一、Token基础定义

Token = 令牌 / 临时凭证

简单说:

  • 服务端生成一串随机字符串
  • 发给前端(页面 / 浏览器)
  • 前端每次发请求必须带上这串 Token
  • 服务端验证 Token 有效才处理请求
  • 用过一次就失效 / 定时失效

一句话总结:Token 就是服务端给客户端发的 “一次性临时门票”。

二、Token作用

  1. 防止暴力猜密码: 每次请求必须带新 Token,暴力脚本无法自动连续发包
  2. 防止重复提交: 同一个 Token 只能用一次。
  3. 防止 CSRF 跨站请求伪造: 攻击者拿不到你的随机 Token,无法伪造请求。

三、Token防暴破的原理

Pikachu 防爆破模块的工作流程:

  1. 打开登录页面,服务端生成一个 随机 Token,藏在表单里,查看网页源代码

  1. 你输入账号密码提交
    • username=test
    • password=test
    • token=abcd1234
  1. 服务端做两件事
    • 验证 Token 是否存在、是否有效
    • 验证完 立即销毁这个 Token(一次性)
  1. 返回新页面 → 生成新 Token

四、为什么能防爆破

  • 暴力破解工具(Burp)默认只会重放同一个包
  • 但 Token 一次性有效
  • 重放 → Token 失效 → 登录失败
  • 必须每次先获取新 Token,再发包才能成功

第一步:设置代理并抓包

打开bp工具,浏览器中设置好代理为burp,开启拦截,输入测试账号密码,点击登录后,成功抓包,并在包中发现token

第二步:查看历史响应包

在历史记录中发现连续发的三个包中,前一个响应包生成的token是下一个请求包的token

第三步:发送intruder模块

将数据包右键发送到intruder模块中,选择交叉攻击类型,先清空位置,在选中目标添加payload,这里为了方便验证,假设第一次尝试账户就是正确的(admin)

第四步:设置选项参数

这里需要先设置好正则提取参数,勾选从响应包提取项目,点击添加,查询隐藏的token字段,鼠标勾选token字段,上方自动生成正则表达式,左(自定义)右(正则中提取)二选一即可,点击确定

然后再下面的重定向选项中选中总是跟踪重定向

第五步:设置资源池参数

防止默认并发数为10导致token变化太快,这里设置自定义资源池为并发1

第六步:设置payload参数

设置第一个payload位置的参数,自定义输入可能密码password 123456......;然后点击开始攻击,第二个payload参数设置为递归提取,首次请求初始payload为任意一次页面的token即可

第七步:爆破攻击结果

攻击结果中,点击长度,查看与其他数据包长度不同的那一条,就是正确的账号和密码。查看返回包可以发现,该返回结果为登陆成功