newstarctf2024 re week3 取啥名好呢

csapp里的“异常流”,没有听过这个

第一步,先查壳,是小端序

直接丢ida里

应该是加花了

看看有什么字符串,有个right,定位一下right的反编译

可以看到有一个cmp函数

看看sub_12E9的交叉引用,是逐位异或

上层的交叉引用

signal:

应该是根据异常的信号去调用相应的handler函数

现在看看加花的那段汇编

瞄了好久,都没看到典型的加花,倒是有一些数据插在里面

先转化为data,再将0ff.....nop了

再将这下面的转化成代码

回到函数开头处undefine再create function,可以看到成功反编译了

现在下断点调试,f8

第一步是“SIGSEGV”异常流,f9后点击yes

f8后是“SIGILL”

继续f9+yes,而后是赋值

break后,对这个byte数组进行23次+操作

一直f8,最后有一个异常流“SIGFPE”

这是过程

1:60指向68的地址(其实数组循环加的就是68里的值)

2.没有实质性动作

3.加&68(实际上是&60的)的值

4.开始加密

可以写解密代码了

data=[  0x4F, 0x54, 0x48, 0x53, 0x60, 0x45, 0x37, 0x1A, 0x28, 0x41,
  0x26, 0x16, 0x3B, 0x45, 0x14, 0x47, 0x0E, 0x0C, 0x70, 0x3B,
  0x3C, 0x3D, 0x70]
print(len(data))
for i in range(0,len(data)):
    data[i]=data[i]^i
    data[i]=(data[i]-233)&0xff
print(''.join(chr(i) for i in data))

flag{WH47_C4N_1_54y???}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值