浅析云南某大学门户网密码加密算法

在这里插入图片描述

声明

该笔记仅为学习测试记录📝,请不要通过本篇文章进行其他非法操作,文中对于一些特殊敏感的信息做了处理,仅供学习思路,贴到的代码对于ip以及域名做了处理,我爱我校!

开始

通过抓包我们发现登录的密码被加密了

在这里插入图片描述

而且每次算法对同一个数据不太一样,应该是密码通过解密后验证达到登录的效果

通过模拟登录发现本次的请求

http://****/sso/ssoLogin

接口返回的响应体为

{“state”:true}

再次观察下一个抓包记录

在这里插入图片描述

猜测这应该才是正确的登录请求,第一个应该是验证密码正确性

继续往下,我们观察该接口

http:///sso/login?service=**

响应体包含

COMSYSUIATGC=TGT-********* Location:http://****?ticket=ST-119***********

截图

在这里插入图片描述

当然这个有啥用是吧,有人可能会问

通过location重定向新的地址,后面的ticket就是token

我们再返回官网f12看下,发现了个文件

在这里插入图片描述

打开后,令我不敢相信,密码的publickKey居然就在第一行????

在这里插入图片描述

var publickKey=“MIGf**********************************************************************************************************************************************************AB”;

为了验证算法它是如何加密的 ,我将门户网站登录页保存下来, 保存到桌面

在这里插入图片描述

通过对该网页的编辑查看,我发现密码加密的算法

代码语言:javascript
复制
 $.post("/sso/ssoLogin",{"username":$(".un_input input").val(),"password":encodeURIComponent(encrypt.encrypt($(".passwd input").val()))
在这里插入图片描述

为了继续验证我在js里面打了 console.log(); 进行输出

确定密码前输出加密后的密码

在这里插入图片描述

以及 获取到publickKey的代码

在这里插入图片描述

接下来 我保存 卡开 f12

在这里插入图片描述

对比发现 与jsencrypt.js中的一致

接下来验证密码算法,因为密码不唯一,所以我们不好在这里测试,刚刚忘记将密码套上encodeURIComponent()了

在这里插入图片描述

我套上后,模拟登陆一次

在这里插入图片描述

将得到的加密后的密码,通过刚刚抓包的接口发送

python代码如下(为了保护母校,ip及其有关信息就不方便放出来)

代码语言:javascript
复制
def ssologin():
cookies = {
    'JSESSIONID': 'E3628BB0DE360FBB6F7DC6EF0A3C2525',
    'JSESSIONID': 'A61C163B10934153639B46789D6B0AA4',
    'ymu': '22313507',
}

headers = {
    'Host': 'ip',
    'Connection': 'keep-alive',
    # 'Content-Length': '229',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Origin': 'ip',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Redmi 6 Build/PPR1.180610.011;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Referer': 'http://202.203.158.158/sso/login?service=http%3A%2F%2F****%2Fj_spring_cas_security_check',
    # 'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
    # Requests sorts cookies= alphabetically
    # 'Cookie': 'JSESSIONID=E3628BB0DE360FBB6F7DC6EF0A3C2525; JSESSIONID=A61C163B10934153639B46789D6B0AA4; ymu=22313507',
}

data = {
    'username': '学号',
    'password': 'JunsLYUvD*******EAys=',
}

response = requests.post('http://*******/sso/ssoLogin', cookies=cookies, headers=headers, data=data)
print(response.text)</code></pre></div></div><p>运行结果</p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:40.57%"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1722879781954550384.png" /></div><div class="figure-desc">在这里插入图片描述</div></div></div></figure><p>登陆成功!!</p>