圣诞节到了,不,我是来送“礼物”的,西江酒店登录页面的参数加密破解。地址如下:aHR0cHM6Ly9ob3RlbC5iZXN0d2Vob3RlbC5jb20vTmV3TG9naW4v在浏览器中输入上面解密后的地址,按F12打开浏览器开发者工具,随便输入一个账号和密码。这里的密码是我平时用的123456。抓包后如下图:有两个加密参数black_box和password。下面介绍两种定位加密代码的方法:1、在搜索栏中搜索以上两个加密参数;2.这是一个xhr请求,可以通过放置xhr断点来定位。通过“black_box”搜索,结果只有一个JS文件。点击左下角大括号美化JS,导航到加密位置。标记断点重新发送请求,请求会停在断点处。这个fmOpt.getinfo()函数就是我们正在寻找的black_box。断点停止后,点进去可以看到这些奇怪的变量,而且所有的变量名看起来都差不多一样长。你一定在想,这到底是什么东西。不要恐慌!这是JS混淆代码。直接拉到最上面,可以看到变量的定义很多,所以我们需要把这部分代码去掉。如果你觉得混淆后的代码看起来很不舒服,你可以选择写一个脚本用正则表达式或者replace()来替换。例如,您可以在Conlose的输出中查看其真实面目。当然这里也可以不用替换就执行。无论选择哪种方式,前提是要找到完整的代码,不能有遗漏,否则不会执行。我们主要推导的代码是oO00oo对象中的OOQo0o函数。因此,需要扣除其中定义的变量或对象。推完后,通过调试判断少了哪些变量。这里通过浏览器调试,点击sources,选择+Newsnippet,粘贴我们刚才扣的代码文件名,可以任意命名,运行下面的Conlose后右键选择Run,进行调试!一般经过反复调试和添加代码,都可以正常运行。这里直接给出结果。black_box参数完成,接下来就是password了!重新发送请求,断点继续停在black_box加密处!可以看出,在对black_box进行加密之前,password已经被加密了。所以我们可以根据调用栈向前查找两步,找到password的加密代码。看看这个encryptAES你熟悉不,没错就是AES加密!遇到这种加密就不用扣密码了……嗯,什么都解锁了!keyn,offseta,我们直接用crypto-js执行!完美的!结果与抓包结果一致,可以睡觉了。下期再见~更多内容请关注我公众号,Python编程与实战
