1.xor
先放入查壳软件,发现没加壳,是64位的,打开ida64。
可以Shift+E导出数据。
由此写出脚本还原字符串。
得到flag{QianQiuWanDai_YiTongJiangHu}
2.reverse3
先放入查壳软件,发现没加壳,是32位的,打开ida32。
查看字符串。
进入主函数查看。
Str2的值。e3nifIH9b_C@n@dH
进入sub_4110BE函数查看。这是一个base64加密的函数。
综合整个函数,先将输入的Str字符串进行base64加密,将加密的结果进行简单的for循环变化,最后与Str2进行比较,相等就是正确的flag。由此写出脚本。
得到flag{i_l0ve_you}
贴一个base64加密的具体过程。
3.helloword
用ida打开什么也没看到
这是一个apk文件,我去网上了解了一下,是安卓的程序,于是下载了apktool来反编译这个文件。
打开AndroidManifest.xml文件,查看声明的入口Activity
找到MainActivity.smali文件,找到flag{7631a988259a00816deda84afb29430a}
4.不一样的flag
先放入查壳软件,发现没加壳,是32位的,打开ida32。
找到关键函数
经过以上分析,可以推断出是在一个5*5的地图上行走
* 1 1 1 1
0 1 0 0 0
0 1 0 1 0
0 0 0 1 0
1 1 1 1 #
每一次移动都不能走到1上,所以flag{222441144222}
5. 玩游戏
先放入查壳软件,发现没加壳,是32位的,打开ida32。
进入主函数
分析这个函数,v2到v57可以看作一个数组,v59到v114可以看成一个数组,v2先跟v59异或,再跟0x13u异或,可以写出解密脚本。
得到zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}
6. 常驻311
先放入查壳软件,发现没加壳,是64位的,打开ida64。
v2的值是off_130的地址加上7
off_130的地址是0000000000000130h,所以v2=137h,也就是311,再点进test(v2)函数
v1=2,a1=a1*2,a1就是v2,所以v2=311*2=622。
接下来看encrypted_flag,这很奇怪,这是dq,用插件可以得到正确的形式
encrypted_flag=[0x00000208, 0x00000202, 0x0000020F, 0x00000209, 0x00000215, 0x00000219, 0x0000025D, 0x0000025F, 0x0000020D, 0x0000025E, 0x00000203, 0x0000025D, 0x00000231, 0x0000021A, 0x0000025E, 0x00000231, 0x0000025F, 0x0000020F, 0x0000020C, 0x00000231, 0x00000258, 0x0000025C, 0x0000025C, 0x00000213]
可以写出脚本
得到flag{w31c0m3_t0_1ab_622}