[HDCTF2019]Maze

拖入ida后发现打不开,可能是加壳了,脱壳,成功打开。

找到main函数

花指令3

发现没有办法反汇编,这里最后的应该jnz跳转到下面一行,就是个没有用的指令,下面一个的call明显出错了,没有这个地址,可以推断出这段代码添加了花指令,IDA分析失败了。D键转换成字节数据查看

花指令4

发现 db 0E8h这条指令是添加的花指令,将其nop掉,接下来打开OD,找到要修改的地方

花指令1

将JNZ和下面的db E8都改成NOP保存为新的程序,再打开IDA

花指令5

可以看出这是一个迷宫题,找到存放迷宫图的地方

花6

花7
用wasd控制行走,dword_408078控制左右,dword_40807C控制上下。
s是上,w是下,a是右,d是左。
行走路径为ssaaasaassdddw
则flag为flag{ssaaasaassdddw}

[MRCTF2020]Xor

用IDA打开,发现不能反汇编,不知道是什么原因

看汇编的流程图

1

先看到第一个call sub_401050,这里压入了一个byte_4212C0和一个**%s,说明输入的flag最终会存放到byte_4212C0,继续往下看到loc_4010B6**这个段,关注edx,edx不断的在自增,最后出循环之后,与1Bh进行比较,大概就可以猜测edx存放的就是输入的flag的长度。
2

如果最后edx的值大于0x1b,流程就会往右走,直接提示Wrong!再看左边

3

byte_4212c0的数据给了cl,把cl与al异或,再与byte_41EA08比较,不相等则输出错误,EAX再+1,eax再与edx比较大小,dx可以看到是存储的flag的长度,小于则继续循环

1
2
3
4
5
6
text='MSAWB~FXZ:J:`tQJ"N@ bpdd}8g'
flag=''
for i in range(len(text)):
flag+=chr(i^ord(text[i]))

print(flag)