两个站点都是比较简单的前端加密,也都是朋友喊来练练手的,不过Trace这款工具还是不错的吧
推荐一下六边形战士的Github工具:https://github.com/CC11001100/ast-hook-for-js-RE
Ps: 站点一比较敏感,码的比较厚,见谅
点击登录后可以抓到请求包
这里的password参数被加密了,看password后面的%3D,可能会是Base64
但是无法解密
最近在看雪论坛看到了一款Chrome插件,正好试试
后面会发现这款插件比较鸡肋,比如手动搜关键字,也可能是我不太会用
走一遍登录流程先触发一下加密函数
开启调试
登录之前这里的password还是没有值的,随便输入账号密码点击登录,再次获取
这里给出了一个JS,过去搜PASSWORD关键字
来到这个JS搜索password关键字定位到了这一行,这里4四个关键字,为什么要定位到这一行,我们可以来看一下其他的关键字
光从定义上看就肯定比第四个password有价值,所以在这里打下断点
在这里下一个断点,然后输入账号密码点击登录
这里直接拦截了,但是还有个验证码环节所以把这里放通
输入验证码点击登录之后还是会拦在这里,单步往下跟
从上图中可以看到,在请求登录之前有一个/sso/image/loginCertTiket
请求,这个请求是干什么用的,后面再说,继续跟
会发现这里对这个接口请求了,并且传入了一个uid的参数,在burp中可以看到
这里会返回一个ticket,然后再次单步会返回v
此时继续单步就会来到login的前端页面
然后继续单步调试,注意看一下这里的前端代码
首先就是可以看到调用了loginCertTiket();那肯定就是刚刚的请求的那个接口,返回的ticket,肯定在这里有一些用处,仔细一点可以看到,下面已经调用了加密密码的函数了,encryptByDES
注意这段代码,首先如果ticketlogin不等于Errororr,并且用.trim函数移除password里面的空白字符不等于空给的话 然后!=不等于 空 就会走下面的加密逻辑
继续单步调试
这个ticketlogin是不是很眼熟,这里就是之前请求/sso/image/loginCertTiket
返回的值,接下来就会走encryptByDES
函数,并且传入我们输入的明文密码,和ticketlogin,那么也就是key
鼠标放在这个函数上面可以跳转过去,接着看
跳到这个函数这里就已经很明显了,接收一个message,一个key,message就是我们的密码明文,key就是ticketlogin,可以看一下这里的加密模式,ECB,那么DES ECB模式是不需要我们输入vi偏移量解密的,那么这里就好办了,先继续单步往下调
走过这个函数之后,password的值就变成密文了,那么现在开始解密
上面说到 DES加密算法的ECB模式,我们只需要有KEY和密文就可以解密了,不需要输入VI的,那么直接找个在线加密解密站点就行了
跳转中...
找了半天就这个好用一点
这是密文,直接带进去解密
解密成功,记得填充选上pkcs7padding即可
登录的时候post参加密,打断点,搜关键字的方式调
我这里是搜关键字找到前端加密的JS
看一眼AES加密,打断点点击登录可以看到原始的JSON
其实到这里啥也不用看了,decrypt函数写在下面了
下面decrypt函数的参数e很明显就是明文
然后转hex赋值给a,然后转base64赋值给n,然后下面r调用o.a.AES.decrypt
这里需要3个参数,密文,密钥,AES加密的参数
可以看到这里传入的
n就是上面明文转完base64的密文,o.a.enc.Utf8.parse(i.a.myStar)就是密钥,然后就是CBC的偏移,然后就是CBC模式,最后就是pkcs7填充,那直接调这里的函数就可以解密了
最后的解密调用
因为这里的函数都是返回值,所以直接把函数当成参数传进去,调用的时候自动会有返回值,所以解密成功
POST
/
sso
/
login HTTP
/
1.1
Host: UzzJu.com
Cookie: JSESSIONID
=
25752E4A682189EC6DC0C4167CC5EC37
; _dd_s
=
logs
=
1
&
id
=
04d084df
-
52b7
-
4f88
-
a61d
-
b24e3f310741&created
=
1655369736789
&expire
=
1655371261240
Content
-
Length:
306
Cache
-
Control:
max
-
age
=
0
Sec
-
Ch
-
Ua:
" Not A;Brand"
;v
=
"99"
,
"Chromium"
;v
=
"102"
,
"Google Chrome"
;v
=
"102"
Sec
-
Ch
-
Ua
-
Mobile: ?
0
Sec
-
Ch
-
Ua
-
Platform:
"macOS"
Upgrade
-
Insecure
-
Requests:
1
User
-
Agent: Mozilla
/
5.0
(Macintosh; Intel Mac OS X
10_15_7
) AppleWebKit
/
537.36
(KHTML, like Gecko) Chrome
/
102.0
.
5005.115
Safari
/
537.36
Origin: https:
/
/
UzzJu.com
Content
-
Type
: application
/
x
-
www
-
form
-
urlencoded
Accept: text
/
html,application
/
xhtml
+
xml,application
/
xml;q
=
0.9
,image
/
avif,image
/
webp,image
/
apng,
*
/
*
;q
=
0.8
,application
/
signed
-
exchange;v
=
b3;q
=
0.9
Sec
-
Fetch
-
Site: same
-
origin
Sec
-
Fetch
-
Mode: navigate
Sec
-
Fetch
-
User: ?
1
Sec
-
Fetch
-
Dest: document
Referer: https:
/
/
UzzJu.com
Accept
-
Encoding: gzip, deflate
Accept
-
Language: zh
-
CN,zh;q
=
0.9
,en;q
=
0.8
Connection: close
username
=
123
&password
=
yfLv9
%
2By4WIY
%
3D
&tiketlogin
=
M9GU90LH
POST
/
sso
/
login HTTP
/
1.1
Host: UzzJu.com
Cookie: JSESSIONID
=
25752E4A682189EC6DC0C4167CC5EC37
; _dd_s
=
logs
=
1
&
id
=
04d084df
-
52b7
-
4f88
-
a61d
-
b24e3f310741&created
=
1655369736789
&expire
=
1655371261240
Content
-
Length:
306
Cache
-
Control:
max
-
age
=
0
Sec
-
Ch
-
Ua:
" Not A;Brand"
;v
=
"99"
,
"Chromium"
;v
=
"102"
,
"Google Chrome"
;v
=
"102"
Sec
-
Ch
-
Ua
-
Mobile: ?
0
Sec
-
Ch
-
Ua
-
Platform:
"macOS"
Upgrade
-
Insecure
-
Requests:
1
User
-
Agent: Mozilla
/
5.0
(Macintosh; Intel Mac OS X
10_15_7
) AppleWebKit
/
537.36
(KHTML, like Gecko) Chrome
/
102.0
.
5005.115
Safari
/
537.36
Origin: https:
/
/
UzzJu.com
Content
-
Type
: application
/
x
-
www
-
form
-
urlencoded
Accept: text
/
html,application
/
xhtml
+
xml,application
/
xml;q
=
0.9
,image
/
avif,image
/
webp,image
/
apng,
*
/
*
;q
=
0.8
,application
/
signed
-
exchange;v
=
b3;q
=
0.9
Sec
-
Fetch
-
Site: same
-
origin
Sec
-
Fetch
-
Mode: navigate
Sec
-
Fetch
-
User: ?
1
Sec
-
Fetch
-
Dest: document
Referer: https:
/
/
UzzJu.com
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)