首先按一下我最爱的f12,选择网络 抓包
这里我使用到的账号
user: 111@qq.com
pass: 111111
点击登录后,通过分析 以下两个post包是关键
从中还加载了两个外部js,可能是加密包
①数据包1
先看一下提交的参数,可以看到是一个json,里面传递了两个参数
input_id 为固定参数
value 当前账号
以下为返回值,返回值也是json,并且多出了一大堆的参数
这里顶雷猜测,通过我以往的经验来看这个包的返回值绝对是吊毛程序员为了刁难我 想让我知难而退的小把戏
身为妮妮的男朋友岂能被此惊退?
咱们接着看第二个包
②数据包2
先看一下提交的参数,这里主要是
publicA clientEvidenceM1csrftoken sessionTimeout
先到查看器搜索 hidden,看看有那些隐藏的组件
一搜就搜出了一大把,但是呢 只有csrftoken和sessionTimeout有值
其他的参数,在第一个包有,比如
那么现在就差publicA clientEvidenceM1这两个参数了
我们再看一下抓到的包,这里发起者是jquery,也就是说,不单单只是点击按钮就提交表单那么简单,js也参与了
这里点击调试器,选择login.min.2BF9V.js
点击进来就可以看到,这里js获取了全部输入的值
往下面翻,可以看到这里发起了ajax请求,是第一个包
在这里下段,然后点击登录调试一下看看
下好断点,直接输入账号密码点击登录,成功的在此处断点,然后再单步步过进行一步步的分析
第一次单步,直接跳转到了96行,继续往下分析
通过我先省略掉一些类似于以上操作的截图,直接跳到重点
通过几次单步后跳转到了这里,这里this.inputPublicA.val 修改某组件的值
this.srpClientCredentials.publicA.toString(16)
this.srpClientCredentials.clientEvidenceM1.toString(16)
这里复制第一给被赋值的命名进行搜索,可以看到是获取了一个id为publicA的标签
这里再到查看器搜索一下,可以看到正是那个被隐藏的表单标签,这里已经被赋值了
另一个 this.inputClientEvidenceM1.val 也是同样的
这里再全局搜索一下srpClientCredentials
从97行开始,function(e) 参数e 为 请求包1 的返回值
这里在102行进行了实例化srp6aRoutines.ClientSession然后返回给了srpClientSession
这里的ClientSession是在js/login/srp-client.min.2NkGE.js?v=1 里面
这里返回i.a e()函数
接着上面的搞
这里在102下段,进行调试
t.srpClientSession = new srp6aRoutines.ClientSession(e.modulus, e.generator, e.hash_function, e.version, e.iterations, e.eligible_credential_upgrade, window.serverResourceUrl),
这里实例化主要是modulus参数与最后一个包
在第一个包的返回值里面
最后一个参数是动态引入一个js文件
其他参数可以固定
这里又将密码传递了进去,其余的参数都在第一个包
在104行返回了第二个包需要的参数 publicA clientEvidenceM1
既然已经算出当前的加密过程,再利用js扣出加密的代码
这里记得引用srp-client.min.2NkGE.js
还有js动态引入的0.srp6a-routines.worker.2Efyv.js
成功扣出登录的js加密算法!
搞渗透的时候是不是经常遇到这类加密就束手无策了呢?
这篇文章教你应对之策
如果觉得写的不错的话,记得关注本公众号《通过听觉入侵你》
你们的关注就是对我最大的支持
同时也是我写文章的动力