GkCTF2020逆向wp
发现GKCTF在buu上面挂了好久,干脆做着玩玩好了
Check_1n
打开一看,是一个 真-虚拟机,vm看了直呼内行
直接找字符串
解出来是这样的
Why don’t you try the magic brick game
然后又找到一串很像密文的字符串
看一下调用了他的函数
decode:
|
|
是base58的算法,直接在线解就可以了
flag{f5dfd0f5-0343-4642-8f28-9adbb74c4ede}
babyDriver
0x140001380里面是一个迷宫
code:
|
|
乍一看 local 的变化有些地方毫无章法,再仔细一看发现是用来判断是否到底的,如果到边界就从另一边出来
map:
|
|
因为是驱动文件所以字符是以键盘扫描码的形式输入的
对应表: https://blog.csdn.net/wenweimin/article/details/105561
注意键盘扫描码全是大写
把迷宫走出来转md5
LKKKLLKLKKKLLLKKKLLLLLL flag{403950a6f64f7fc4b655dea696997851}
Chelly’s identity
这个题还比较有意思,可惜还是单字节加密
直接动调到加密位置
demo
|
|
函数sub_3B1325里面的东西很不知所云,直接看汇编算了
发现这里从一个素数表取数和flag的值做对比,异或值是素数累加的值,分析得出算法:
dome
|
|
爆破就行了:
exp
|
|
Che11y_1s_EG0IST
EzMachine
虚拟机,先找vm的部分:
这个大循环基本就是vm的主体了,通过改变这个 call 调用的函数来传递参数和对flag进行计算
经过漫长的调试发现在取从flag中取字符串的函数后会调用好几个用减法来进行对比的函数,发现程序用这种方式来判断字符串的范围
|
|
之后几个计算的函数有无又计算符的关系还比较方便分析,最后可以搞定加密的代码,再观察最后对比的方式可以找到传参方式
|
|
又是单字节加密,把所有科显示字符弄出来一一对应再去掉题目不要求的字符就可以了
|
|
然后把题目不要求的字符去掉
f,l’a!g{S3u%c0h_A_EZVM} flag{Such_A_EZVM}
DbgIsFun
晚上闲着没事就干脆做了,明天把剩下的都做了吧,找不到wp反而更刺激了
开局就看到TLS,反调试预定,调试后发现中间的异或是再解smc,众所周知单层smc和没有是一样的(x)
下断点看看 sub_4010F0 里面
demo:
|
|
十分明显的RC4,rc4之前将flag每个字符的值异或上了0xc9
题目到这里已经做完了,到0x4014AA里面去拿数据直接rc4就完事了
但是注意,动调时和非动调时内存0x4014AA里面的值因为smc解码的原因,所以是不一样的
然后继续动调可以发现前面的rc4函数是可以进去的,但是因为反调试,flag的输入被跳过了,但是这并不影响后续流程
这里Sleep的计时器因为没有pdb文件所以会出错,改dword_41A8E0的值跳过
出现在数据段的神必字符串: X:\I_am_afraid_there_is_no_PDB_file_for_you_my_friend:D
|
|
因为没有 flag 输入所以 len 是0,这里是可以自己算的,但作为一条懒狗完全体,能让程序做的事情我们坚决不做
braekpoint
|
|
exp
|
|
flag{5tay4wayFr0m8reakp0int}