提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
声明:
仅供学习交流,严禁用于商业用途和非法用途,否则后果自负,与作者无关。如若侵权,请联系删除。练习网址aHR0cDovL2JpcmRyZXBvcnQuY24vaG9tZS9hY3Rpdml0eS9wYWdlLmh0bWw=
一、请求头参数逆向
1.抓包找加密参数,看请求参数有两个值是加密的,sign、Requestid首先就是要找出这两个值的加密位置。
2.这里选择XHR断点寻找参数加密位置,翻页,断点生效,成功拦截
3.此时的header肯定是已经加密处理过的,往上跟栈,send发包之前,到ajax这里,往上翻,慢慢找,看看有没有有用的信息,突然,我们发现setRequestHeader函数,我们推测可能跟它有关系,我们打上断点,重新翻页,让代码断住,然后进入函数内
4.到这里各个参数的加密位置我们已经找到,sign也就是f=MD5(e + d + c) requestId是d,也就是getUuid()这个函数生成的,c是时间戳,e是明文页码和页面最大条数。用在线MD5加密e + d + c 发现和加密结果网站一致,说明该网站的md5加密并未魔改。
5.然后我们把这个函数和需要用到的函数抠下来并改写,首先进入生成d的函数getUuid(),运行一下,报错,函数未定义,然后把另外两个补上,然后导入crypto-js和jsencrypt两个库,把encrypt.encryptUnicodeLong 替换成 encrypt.encrypt再次运行,成功拿到值。
二、解密页面数据返回值data
1.继续XHR断点,往上跟栈,会发现ajax里的parseData比较可疑,打个断点试下
2.这里的data已经是加密过的了,点进去看下
3.打个断点并跳到这里,res.data是加密data,BIRDREPORT_APIJS.decode(res.data)是明文,显而易见,解密函数就是 BIRDREPORT_APIJS.decode,我们点进去
4.到这里就很清晰了aes加密,填充pkcs7,模式CBC,我们把函数拿下来,并改写,a参数就是密文data,接下来写py文件。大功告成!
总结
菜,还带多练!!!