某网站登陆参数分析
目标地址:aHR0cHM6Ly9wYXNzcG9ydC5rb25nemhvbmcuY29tL2xvZ2lu
只有password是加密的,其他参数固定,看到这里,我知道,我已经赢了。
全局搜索password,不要只关注JS
通过login函数,定位到登录接口
然后就是不停地debug了,拿了表单参数做了一堆校验之后,进入VM中的代码
到这里,encrypt函数我们的目标了,这个函数第一个参数是原始密码,第二个参数是盐
这个盐哪里来的,向服务器请求来的。
每次刷新或者登录失败,都会自动发请求获取盐
加密函数比较简单,直接重写了或者扣下来都不难,这个网站的JS还是比较友好的。
为什么搜password在JS定位不到加密位置?
我们是调试进的VM引擎找到加密位置,关于浏览器VM引擎,可以去百度了解一下。
加密的那部分代码其实是用eval生成的,验证如下:
在eval函数断点
控制台查看KZLoginHandler
放行eval之后
python模拟
本来以为登录应该挺简单的,结果不停返回操作太频繁。。
再看看JS文件,发现了对于时间间隔的判断,操作太快被判定为不安全,不让登录。。
然后代码里加个sleep,就能登录了。
这种简单粗暴的防护手段还挺有效,增加了我的逆向成本。。
本文代码:github