[HDCTF2019]Maze
查壳,存在UPX壳
kali脱壳,一开始不知道为什么脱不掉,后来重命名了个简短的名字就可以
ida打开,打开之后看到这里有一个花指令
关于花指令:
花指令是,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令:jmp, call, ret的一些堆栈技巧,位置运算,等等。
打开OD,根据ida找到出现花指令位置的地址
NOP掉跳转
然后保存修改后的程序
将保存过后的程序拖进IDA看看
字符串中有这样一串*号
又通过下面的flag提示找到关键函数,可以知道这是一个迷宫题
控制的有两个数据,一个是dword_408078,另一个是dword_40807C
双击进去查看初始数据。
初始状态:
dword_408078=7
dword_40807C=0
经过14次移动需要使
dword_408078=5
dword_40807C=-4
绘制迷宫
1 | *******+** |
行走路径为ssaaasaassdddw
flag是:flag{ssaaasaassdddw}
[FlareOn4]IgniteMe
查看函数 sub_401050()
v0是输入,v4是一个处理函数,然后经过循环的异或脚本,最后和byte_403000
比较
byte_403000:
看一下对v4的处理
不明白,动态调试一下
可以看到v4=0x4
编写脚
1 | arr2 = [0x0D,0x26,0x49,0x45,0x2A,0x17,0x78,0x44,0x2B,0x6C,0x5D,0x5E,0x45,0x12,0x2F,0x17, |
flag是:flag{R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com}
[MRCTF2020]Xor
通过字符串跳转
交叉引用,按F5发现无法分析call
看401095处
调用了函数sub_401020
双击函数F5查看,发现它有多个参数
我们返回401095处,看这一行上面的push命令
只有一个push,是一个字符串的地址,32位,所以只有一个参数
回到sub_401020
,点击函数名按y键,将参数修改为一个
现在401095处可以F5了
19行可知v0和byte_4212c0进行异或,得到byte_41EA08
byte_41EA08函数查看内容
1 | a = "MSAWB~FXZ:J:`tQJ\"N@ bpdd}8g" |
MRCTF{@_R3@1ly_E2_R3verse!}
flag是:flag{@_R3@1ly_E2_R3verse!}
[MRCTF2020]hello_world_go
64位ida打开
搜索main函数,打开main_main
go语言写的,看别的师傅都是直接搜到的,我也不知道为什么师傅们知道搜就可以emmm
总之标黄的地方
flag是:flag{hello_world_gogogo}