某网站登陆参数分析

目标地址:aHR0cHM6Ly9wYXNzcG9ydC5rb25nemhvbmcuY29tL2xvZ2lu

QQ截图20211102102214.png

只有password是加密的,其他参数固定,看到这里,我知道,我已经赢了。
全局搜索password,不要只关注JS
通过login函数,定位到登录接口
QQ截图20211102102454.png
然后就是不停地debug了,拿了表单参数做了一堆校验之后,进入VM中的代码
QQ截图20211102102711.png
到这里,encrypt函数我们的目标了,这个函数第一个参数是原始密码,第二个参数是盐
QQ截图20211102103644.png
这个盐哪里来的,向服务器请求来的。
每次刷新或者登录失败,都会自动发请求获取盐
QQ截图20211102103749.png

加密函数比较简单,直接重写了或者扣下来都不难,这个网站的JS还是比较友好的。

为什么搜password在JS定位不到加密位置?

我们是调试进的VM引擎找到加密位置,关于浏览器VM引擎,可以去百度了解一下。
加密的那部分代码其实是用eval生成的,验证如下:
在eval函数断点
QQ截图20211102104511.png
控制台查看KZLoginHandler
QQ截图20211102104500.png
放行eval之后
QQ截图20211102104617.png

python模拟

本来以为登录应该挺简单的,结果不停返回操作太频繁。。
再看看JS文件,发现了对于时间间隔的判断,操作太快被判定为不安全,不让登录。。
steptime.png

然后代码里加个sleep,就能登录了。
QQ截图20211102182151.png
这种简单粗暴的防护手段还挺有效,增加了我的逆向成本。。
本文代码:github

Q.E.D.


一切很好,不缺烦恼。