HDCTF2019Maze-[FlareOn4]IgniteMe-[MRCTF2020]Xor-[MRCTF2020]hello_world_go

[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
绘制迷宫

*******+**
******* **
****    **
**   *****
** **F****
**    ****
**********

行走路径为ssaaasaassdddw
flag是:flag{ssaaasaassdddw}

[FlareOn4]IgniteMe

在这里插入图片描述
在这里插入图片描述
查看函数 sub_401050()
在这里插入图片描述
v0是输入,v4是一个处理函数,然后经过循环的异或脚本,最后和byte_403000比较
byte_403000:
在这里插入图片描述
看一下对v4的处理
在这里插入图片描述
不明白,动态调试一下
请添加图片描述
可以看到v4=0x4
编写脚

arr2 = [0x0D,0x26,0x49,0x45,0x2A,0x17,0x78,0x44,0x2B,0x6C,0x5D,0x5E,0x45,0x12,0x2F,0x17,
0x2B,0x44,0x6F,0x6E,0x56,0x09,0x5F,0x45,0x47,0x73,0x26,0x0A,0x0D,0x13,0x17,0x48,
0x42,0x01,0x40,0x4D,0x0C,0x02,0x69]

arr1 = []
v4 = 4
for i in range(len(arr2)-1,-1,-1):
    arr1.append(arr2[i] ^ v4)
    v4 = arr1[-1]
print ('flag{'+''.join([chr(x) for x in arr1[::-1]])+'}')

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函数查看内容
在这里插入图片描述

a = "MSAWB~FXZ:J:`tQJ\"N@ bpdd}8g"
flag = ''
for i in range(len(a)):
    flag += chr(i ^ord(a[i]))
print(flag)

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}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值