网址:aHR0cHM6Ly9pZHMuY3F1cHQuZWR1LmNuL2F1dGhzZXJ2ZXIvbG9naW4=
目标:本次目标是完整的登录进该网站,逆向该网站的参数,并使用python模拟登录
1.开启f12抓包,可以输入一个常用的username和pwd,一般我username使用11111111111,pwd使用111111,然后找到登录的包查看,主要有两个加密参数,一个password和一个execution
2.找到需要加密的参数后,查看堆栈,发现是一堆看不懂的东西,然后差不多可以确认是有html发包,所以不能直接找堆栈,需要搜索参数
3.搜索password,找到两个很关键又很明显的地方,一个是encrypt.js和login.js划线处,先分析login.js划线处,点击进去
点进去后看到注释了一个登陆前校验,感觉很大可能password加密便是此处,然后打上断点,登录
看到加密的结果,然后查看这个函数的输入参数,一个是输入的密码,一个是html标签id为pwdEncryptSalt的value值,然后跟进这个encryptPassword函数
跟进函数一眼望去,答案便在眼前,看到AES key和iv 就大概知道他是AES算法的CBC模式,不管三七二十一只要不用python还原,就一个扣就完了,然后还看到了一个randomString函数,字面意思就是一段随机字符串,长度由传进去的参数决定,就在encryptPassword函数下面,然后pwd0就是需要传入的密码,key是标签id为pwdEncryptSalt的value值(放断点之前忘记截图了,再截也是不一样的值,懒得截图,和下面的execution参数一样)
全部抠出来大概7百多行
4.解决完password参数,接下来就是找到execution参数,搜索一下,发现html标签上面有一个name为execution,value的值和execution参数非常相似,然后根据我逆向的经验觉得,对于html发包的一些参数的值很可能会由登录界面html的标签里的值来
为了验证这个想法,将value的值复制到控制台,然后放掉断点,用眼睛比较,懒人就比较头和尾,两段字符串不能说一模一样,只能说由9成9相似
5. 好了到此为止加密的两个参数已经解决,然后前面画线的encrypt.js就是加密函数所在地,可以直接找到加密函数,然后该网站的AES加密没有魔改,所以可以直接网上搜索python实现AES的CBC模式加密,不需要执行JS文件
6.由于教务在线使用了rs5代,所以测试是否成功就不再教务在线测试,在下图这个网站进行测试,查看是否出现了姓名(没有账号的的当我没说)
末尾出现了学号和姓名,到此为止该网站的登录逆向分析到此为止,完结