陕西省赛 逆向wp

First Post:

Last Update:

比赛(3/4)

我的upx -d怎么坏了:

魔改upx壳,先手脱壳,dump出来,可以看到就是一个迷宫:

image-20230607193753008

从S走到#

Babypython

字节码,逻辑挺多的,但是对输入的加密不多,逆着来看,程序会输出output:=1nb0A3b7AUQwB3b84mQ/E0MvJUb+EXbx5TQwF3bt52bAZncsd9c,根据字节码,最后输出时是先base64加密,再逆序,再替换了三个字符,字节码翻译成伪代码如图:

image-20230607193842544

那么再看output是如何生成的,继续手搓字节码,得到伪代码:

image-20230607193907216

只有两部分对output有作用,其他不用管,大概逻辑就是先将flag逐位异或8,再+3,存到了output里。那么先求出base后的output:qglrv@onmlqpA>qmq>mBo3A?Bn<lppA@;lp4nx

Exp

image-20230607193927826

Flag:flag{5dcbafe63fbf3b7d8647c1aee650ae9c}

BadCoffee

是一道加了混淆后的js代码,混淆主要就是在数字和字符串上,逻辑感觉上并无影响,虽然关键逻辑就一点点。

一步一步手动解混淆,把表达式都求出来,是两个42个数字的数组,再将一些不好看的字符串重命名一下。再看逻辑,如图:

image-20230607193942056

Xxx函数就是传入两个数进行异或。大概就是将input逐位异或num_42数组,再倒着异或一遍num_42数组,得到了最后的密文,在最后有对密文的比较,如图:

image-20230607194001098

所以解密exp:

img

Flag:flag{I_c0uld_neu3r_undeRstand_jvaVs3rIpt!}