免责声明:
本文及其所附软件仅供合法测试、研究与教育用途。作者不对因使用或误用本软件所引发的任何直接或间接损失、法律责任或其他后果承担任何责任。使用者在使用过程中必须严格遵守所在国家或地区的相关法律法规,确保其行为均属合法范围内。本文及软件均不构成任何形式的授权许可,使用者应在充分了解风险并自愿承担全部后果的前提下使用。
警告:
请注意,本软件涉及对OJ账号的爆破操作,该行为在未经合法授权的情况下可能构成非法侵入、破坏计算机信息系统安全等犯罪行为。任何未经授权的使用、复制或传播行为均可能受到刑事及民事法律的严厉追究。使用者务必在操作前确认已获得合法授权,并对自身行为及由此产生的全部法律后果负责。建议在开展相关测试前咨询专业法律意见,确保操作合规、安全。
其实也没那么严重啦~
“你是否为
忘记密码(朋友:危)而焦虑?
你是否为找不到破解方法而烦恼?
没关系,OJ账号爆破软件来了!
让你轻松破解,解除密码困扰!
但提醒一句,快乐破解,合法为先!”
本篇着重介绍了OJ(专指形如此OJ)账号爆破工具.好吧我就是闲的手有点痒
我们都知道OJ这个东西是有个人的账号和密码的,但是有时候我们会忘掉我们的密码没法登录,于是便有了此工具(好朋友快乐机
局限性
首先强调,本工具只针对于弱密码用户进行爆破(类似撞库),请保证被爆破OJ的稳定性避免造成损失(一般开个玩玩就行了)
其次,本工具的爆破对象具有针对性,SYZOJ
您需要准备密码库,这里只能为你提供一个弱密码库
事件
下列所有内容均为真实事件改编(不如说就是真实事件)
在我们机房有一个非常"活泼"的小男孩坐在我旁边,每次在OJ的比赛上做题都会去悄悄的登录别人的账号,因为这个OJ账号不限制登录设备,也就是说只要你啥也不搞没人发现你登录了别人的账号.在那时由于每一个人的初始密码都是123456
,于是那这个小男孩就拷贝了别人的代码提交.
自称"寄生虫"
那我为什么会做这个工具那?
因为这个"寄生虫"太粘人(烦人)了,坐在我旁边经常骚扰我,抄袭完代码直接来嘲讽我,大言不惭地说我连xxx都做不出来,再摆出一副无法描述的表情,这里我就不放图了 (省的说我侵犯某人肖像权)
说实话旁边有一个这么jian的人还是很难受的.
然后那?那时候我正好对网络安全感兴趣,想到可以通过暴力枚举的方式来获取密码.
于是一个邪恶的想法就诞生了...
分析请求
回到家的我打开了OJ网站,退出了我的账号,进入登录界面,然后按下了F12
,在UI界面尝试登录账号密码均为空的账号,找到了这个登录请求
可以看到这个POST
请求并没有直接发送原密码而是进行了加密,且服务器响应的值为错误的代码,通过测试我们明白了怎么判断密码是否正确.
但是最大的问题就是怎样破解它的加密密钥那?
我们可以找到这个请求的发起程序就在html
文件里,那么不就好办了,很快我找到了这段js:
function login() {
password = md5($("#password").val() + "syzoj2_xxx");
$("#login").addClass("loading");
$.ajax({
url: "/api/login",
type: 'POST',
data: {
"username": $("#username").val(),
"password": password
},
async: true,
success: function(data) {
error_code = data.error_code;
switch (error_code) {
case 1001:
show_error("用户不存在");
break;
case 1002:
show_error("密码错误");
break;
case 1003:
show_error("您尚未设置密码,请通过下方「找回密码」来设置您的密码。");
break;
case 1:
success(data.session_id);
return;
default:
show_error("未知错误");
break;
}
$("#login").text("登录");
$("#login").removeClass("loading");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.responseText);
show_error("未知错误");
$("#login").text("登录");
}
});
}
$(document).ready(function() {
$("#login").click(function() {
login();
});
});
好家伙,这竟然直接放出源码还没混淆,可以找到使用的还是已经不安全的MD5
加密算法,甚至把盐值(salt)直接放出来了.补充一下:
MD5(Message Digest Algorithm 5) 是一种 不可逆 的 哈希算法,用于将输入数据转换为 固定长度的 128 位(32 字符)哈希值。然而,由于 MD5 已被广泛破解,单独使用 MD5 进行密码存储是极其不安全的。黑客可以提前计算出 常见密码 的 MD5 哈希值,并存入一个 彩虹表,然后通过比对数据库中的哈希值来快速破解密码。因此,为了增强安全性,人们引入了 “加盐(Salt)” 机制。在哈希计算前,人为添加的一段额外随机数据,通常是一个 随机字符串,与原始数据(如密码)拼接在一起后再进行哈希处理。
这里很明显盐值就是"syzoj2_xxx",知道了这些,密码就可以随意地破解了.
为了增加效率我还加了多线程(调了半天代码和我都炸了qaq)
如何使用
💡【小贴士】
√ 测试时可先注册123456等测试账号,密码设为password试试
输入示例:
例如我要爆破用户123456
,这里密码文件.txt
必须和工具在同一目录
最后可能因为多线程原因引发一点错误,不过不影响正常使用
最后密码库数据规模一定要大!!!
可以注册一个测试用户爆破试试,但是密码一定要是密码库有的.
爆破成功信息会生成并储存在一个success_results.txt
文件里
如果报毒
请放心使用,本工具没有任何病毒,也绝不会植入任何木马病毒,如果你不信任可以随时删除,但是你要是使用被杀毒软件拦截了应该就用不了了
我自己测试没有报毒,有问题可以找我(前提我有空
工具下载
或者在GitHub上下载
https://github.com/RuibinNingh/RO-PR0PP
关于开源
我不怎么想开源的
1.工具过于简单
2.使用场景单一
3.我写的挺烂的...
不过如果支持的人数多,我会考虑
更新日志
v2.4 智能加速与稳定升级
智能停止:支持随时终止任务,提高操作灵活性。
性能优化:新增实时速度监控,更精准的数据统计。
稳定性提升:优化异常处理,防止资源占用过高。
用户体验:更清晰的成功提示与尝试次数显示。
自动退出:任务完成后自动终止,提高效率。
v2.3 HTTPS协议错误修复
修复错误:修复 HTTPS 网站可能使用 HTTP 协议的问题,确保请求协议正确匹配。
新增功能:输入网站后自动检测协议并匹配,提升访问的准确性和安全性。
优化:优化若干细节,提升系统稳定性和运行效率。
v2.2 HTTPS错误修复
修复错误:修复
packages\urllib3\connectionpool.py:1099
处的InsecureRequestWarning
,现已添加证书验证,避免未经验证的 HTTPS 请求。优化:优化若干细节,提升系统稳定性和运行效率。