抓包参数分析
Cookie 分析
通过抓包分析 发现 在访问
1
| http://authserver.tjut.edu.cn/authserver/login?service=http%3A%2F%2Fehall.tjut.edu.cn%2Flogin%3Fservice%3Dhttp%3A%2F%2Fehall.tjut.edu.cn%2Fnew%2Findex.html
|
时候 会设置两个 Cookies:route 和 JSESSIONID,当我们清空这两个 cookies 的时候点击登录发现会重定向,确定 ck 是服务器确认登录请求的值。用 python 模拟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| head = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Accept-Language": "zh-CN,zh;q=0.9", "Cache-Control": "no-cache", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded", "Host": "authserver.tjut.edu.cn", "Origin": "http://authserver.tjut.edu.cn", "Pragma": "no-cache", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36" }
session = requests.session()
res = session.get(url = URL["index"]) html = res.text
logger.debug(res.cookies) logger.debug(session.cookies) logger.debug("=============pause================")
|
1
| 2022-06-14 15:43:25.215 | DEBUG | __main__:<module>:45 - <RequestsCookieJar[<Cookie JSESSIONID=4ldhKdeMCHs8LqBGsI3fTMNIAHP-IWlG6LlxQz08ZqpYTX2vs-ss!2090879530 for authserver.tjut.edu.cn/>, <Cookie route=476e8ab4730c382ed52d041b4e6f3f90 for authserver.tjut.edu.cn/>]>
|

分析比较和我们浏览器抓的值一样
登录包分析
1 2 3 4 5 6 7 8 9 10 11
| url = http://authserver.tjut.edu.cn/authserver/login?service=http%3A%2F%2Fehall.tjut.edu.cn%2Flogin%3Fservice%3Dhttp%3A%2F%2Fehall.tjut.edu.cn%2Fnew%2Findex.html
{ "username": "11111111", "password": "zWNWg/d0gFfOD2e1+d6muP6UKh7Awx1a+vkE42QyTKGwg/iRUtqYRm9XUNKw3InmCBRBgILnX0eyAAeN/ENKnm8WDxTE27z8Hrvn2eZQL4w=", "lt": "LT-443257-YMoeFwN60aKuJdJK9uMpcZloda60qN1655193987483-WBvX-cas", "dllt": "userNamePasswordLogin", "execution": "e2s1", "_eventId": "submit", "rmShown": "1" }
|
发现 Password 是加密的,lt 是变动的 execution 是随机的
参数分析
password

在 Dom 事件中点击 发现 login 函数


跟进后发现了关键函数

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function _etd(_p0) { try { var _p2 = encryptAES(_p0, pwdDefaultEncryptSalt) $('#casLoginForm').find('#passwordEncrypt').val(_p2) } catch (e) { $('#casLoginForm').find('#passwordEncrypt').val(_p0) } }
function _etd2(_p0, _p1) { try { var _p2 = encryptAES(_p0, _p1) $('#casLoginForm').find('#passwordEncrypt').val(_p2) } catch (e) { $('#casLoginForm').find('#passwordEncrypt').val(_p0) } }
|
关键函数:encryptAES(_p0, pwdDefaultEncryptSalt); 进一步跟

发现这个 p0 就是 密码 p1 就是 key 点进去 encrypt 这个函数

所以我们只需要原封不动的扣下来就可以了,加密函数有了,接下来就是寻找这个 p1 是怎么生成的
1
| casLoginForm.find('#pwdDefaultEncryptSalt').val()
|
找到了 是加载页面的时候 有个隐藏的元素 这个值是自动生成的所以 所以我们只需要访问的时候把这个值用解析的方式把他拿出来就行了, 在这里我选择的是用 BeautfulSoup 这个库
其他参数
1 2 3 4 5 6 7
| soup = BeautifulSoup(html,'html.parser') ltDom = soup.find('input',attrs={'name': "lt"}) exDom = soup.find('input',attrs={'name':'execution'}) lt = ltDom["value"] execution = exDom["value"] keyDom = soup.find('input',attrs={'id':'pwdDefaultEncryptSalt'}) key = keyDom["value"]
|
用 python 来发包测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ''' 发送登录包 '''
password = jsFunc.call('encryptAES',PASS_WORD,key)
data = { "username":USER_NAME, "password":password, "lt":lt, 'dllt':'userNamePasswordLogin', 'execution':execution, '_eventId':'submit', 'rmShown':1 }
url = 'http://authserver.tjut.edu.cn/authserver/login?service=http%3A%2F%2Fehall.tjut.edu.cn%2Flogin%3Fservice%3Dhttp%3A%2F%2Fehall.tjut.edu.cn%2Fnew%2Findex.html'
res = session.post(url=url,data=data,allow_redirects=False)
|


登录成功
总结
验证码无用
当我们登录多次的时候会发现一个验证码

这个验证码没有任何用 不在服务端进行校验 我们只需要用开发者工具删除缓存和清空 Ck 就可以将这个验证 🐎 干掉

登录参数全部在明面上
没有任何阻碍就可以获取到这些参数并且模拟出来
