写了逆向方向5/7个题
Base64
改变过的base64,在base64 8 -> 6 寻址前加了个凯撒
1 |
|
XTEA
是xtea
1 | srand(0x7E8u); |
开头让自己输入一个delta,根据这题提示misc?并且还有一个很奇怪的解压密码,能猜出来解压密码就是delta并且解压密码其实就是标准xtea的delta,key是随机数做出来的,随机数的srand就在开头,注意到这句代码下还有一个未知函数
1 | void sub_7FF754A42130() |
反调试改变key,那么就可以解密了
1 |
|
水果忍者
unity游戏,可以在dnspy里看看Fruit Ninja_Data->Managed->Assembly-CSharp.dll用dnspy打开
在gamemanager中有一段代码在检测分数
1 | public void IncreaseScore(int points) |
可以看到分数大于999999999会有自解密并且弹出,两个方法,1.ce改分数(我试过改了也没有弹不知为什么),2.自己解密,厨子一把锁HZNUCTF{de20-70dd-4e62-b8d0-06e}
蛇年的本名语言
python逆向
1 | # uncompyle6 version 3.9.2 |
z3约束一下,获得 H1Z1N1U1C1T1F1{1a6d275f7-463}1
前面还有111111116257645365477364777645752361 代表着出现的次数,其实z3获得的两个两个一组,第一个是字符,第二个是出现次数,然后往里面填flag就好a6 d2 75 f7 -4 63
得到HZNUCTF{adffa-f6af-ff6a-fffa-fffd6a}
randomsystem
先静态分析
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
sub_E3127B函数是函数指针的调用,调用者就是上面的函数
那么大致流程就是先输入然后验证,在输入明文,明文被随机数打乱,然后生成8*8的矩阵,紧接着用第一次输入构造key,然后用box1和输入矩阵生成新的矩阵,然后矩阵异或key,最后验证
所以直接z3求解,大部分的可以dump下来
1 |
|
得到3zfb899ac5c256d-7a8r59f0tccd-4fa6b8vfd111-a44ffy4r0-6dce5679da58