2.1【欢乐向】逆向刷题被虐哭日常记录
前面好多题之前做了也没记录,懒得整了,直接从剩下的几个开始:
Getit
这一段是解密的关键,后面的是把flag写入文档又给删了。
其实可以修改程序逻辑让他别删,但是我不会。
逆着来推一边,不会写py,用c写个。
?不应当,我大概是忘了加括号。
???我觉得我的没啥问题,去网上查了查相关的:
在IDA里没看到有S,咱也不知道咋回事。
no-strings-attached
直接扔IDA瞅瞅:
挨个函数筛,筛出最后一个有、东西。
有个叫decrypt的函数,看起来像是加密函数,去gdb里下个断点看看。
r运行,n单步走。
中间那一大坨大概是没设置好,现学gdb怎么用先不管了。
查内存找字符串,
加密好的东西放进了寄存器eax里:
翻翻寄存器里的东西,找到第一个0x00结尾的是字符串的结尾。
x:就是用来查看内存中数值的,后面的200代表查看多少个,wx代表是以word字节查看看,$eax代表的eax寄存器中的值
在这里我们看到0x00000000,这就证明这个字符串结束了,因为,在C中,代表字符串结尾的就是"\0",那么前面的就是经过decrypt函数生成的falg
C:按字符格式显示,把这些十六进制的换成好看一点的。
python-trade:
Pyc文件,网页反编译一下:https://tool.lu/pyc/
。
翻译翻译,这堆字母让我们输入一串字符串,然后经过encode函数一系列操作之后和correct比较,正确了就算是输对了flag。
那咱们就反其道而行之。
先给他把correct给base64解密了。
完事了之后在逆着走一遍。
再次被自己菜哭,我觉得没啥问题咋就不给我过?
又上网查了查,去评论转了一圈,发现有人说可能是base64解码的问题,我用的网页解码,不应该有差才对的,怪事。
补上了几个字符然后过了,正确的是这个:nctf{d3c0mpil1n9_PyC}
Maze
题目给的叫迷宫,运行了一下也没啥东西,扔进ida看看:
看起来像是四个字符:0oO.
其实在IDA里把光标选择ASCII码按R键就可以把ASCII码变成字符了。
然后这几个是坐标移动
v9是一个二维数组,用来控制上下和左右这两种方向的。
两种可能:
1.v9代表横向、&v9+1代表竖向
2.v9代表竖向、&v9+1代表横向
反正是诶个试过去了
从左上角到#,经历→↓→→↓↓←↓↓↓→→→→↑↑←←,转换为o0oo00O000oooo..OO
Flag:nctf{o0oo00O000oooo..OO}
好像是南邮的题吧...真厉害。
还剩一个比较难搞,明天继续。