免责声明
由于传播、利用本公众号所发布的而造成的任何直接或者间接的后果及损失,均由使用者本人承担。LK安全公众号及原文章作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢大家!!!
请勿利用文章内的相关技术从事非法测试,由于传播,利用此文所提供的信息而造成的任何直接或者间接的后果与损失,均由使用者本人负责,文章作者不为此承担任何责任
首先查看堆栈,找到这里
password加密字段逆向
首先看到对password的定义 ,e.toLowerCase()
值为e.toLowerCase()
,也就是把之前计算得到的e
的值转换为小写形式,可能代表用户登录密码的加密后结果
继续去跟到关于e的定义,在上面这一块找到关于e的定义,并且在这里打上断点,再跟进去
跟进去之后,可以看到这里的 this.loginPwd 确实是输入的明文密码
在这里需要注意,前面的Object(d["b"])其实就是d["b"] ,在这里起到的是混淆的作用
等价
继续往下跟,可以看到跟到这里还是明文,步出
继续向下走,步入 ,来到这里
关于这一段代码很眼熟,它的定义是,实现了md5加密
继续走出来 往下跟 可以看到此时e的值已经成为md5加密之后的值
继续往下看,可以找到发起请求的点
此处是发起了一个jsonp的请求 由script脚本进行提交
进入到这个请求中
首先看到在这里定义了r.src
然后在这里
当一个js脚本元素 放在html代码中时 这个请求就发出去了
关于sign值的逆向
在此处打上断点,可以看到,当指定url的时候,sign值已经被定义了
i.data已经有sign值
在这个地方的i,查看的时候已经有sign值
再往上跟,上面的i也已经计算完了sign值
在此处打上断点 ,t是链接
e是数据 并且其中没有sign值
n是对象
所以,大概率在这个new c中就会去计算sign的值
但是跟进去之后,发现也没计算
继续跟到o中 进行json解析
继续往下跟 走到e函数
但是这里没有跟sign值计算相关的操作,继续走出来
往下跟,再次到e中
此时有关于sign的操作
t.data
Q
将t.data与Q的值传递给s函数进行计算,最终得到sign值
s函数的定义,对数据进行排序
在这里需要注意,sign值的生成除了会加一些请求头中的内容,还会加一些固定的字符串,比如上面提到的Q
这个Q就是一个固定的值
在这里打上断点
此时可以看到sign的明文长下面这个样子
"ddsy.user.reg.h5.loginkaptcha3methodddsy.user.reg.h5.loginpassword25d55ad283aa400af464c76d713c07adplatH5platformH5t2025-3-29 17:20:24userName13888888888uuid49ebf944-df78-406d-82f9-9ec02cf53665v1.0versionName5.3.06C57AB91A1308E26B797F4CD382AC79D"
接下来就是编写脚本,直接看最终效果
在脚本中输入相关的变量值 得到的结果
这是发送请求的数据包
我们可以看到 最终得到的结果完全一致
技术交流
原文始发于微信公众号(LK安全):Web加解密攻防1-某当买菜逆向实战
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论