声明
该笔记仅为学习测试记录📝,请不要通过本篇文章进行其他非法操作,文中对于一些特殊敏感的信息做了处理,仅供学习思路,贴到的代码对于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”;
为了验证算法它是如何加密的 ,我将门户网站登录页保存下来,
保存到桌面
通过对该网页的编辑查看,我发现密码加密的算法
$.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及其有关信息就不方便放出来)
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)
运行结果
登陆成功!!
本次学习仅作为一个记录
我爱我校