REdo3

这题目里面藏了干扰

直接看向1330地址

call 了一个寄存器值,这个值0FF7C958Dh已经超出地址范围了,先nop掉,反编译试试

清楚看到argc要为3,argv[1]要为5

而unk_2008地址跳转进去是一段数据

因为开头有大量的重复数据,推测密文内部参杂了垃圾数据

下拉看见有一段连续不重复数据,推测为真正密文

已知flag内有gigem五个字母,和key等长

那么求出key只要反向运算就好了

1
2
3
4
5
6
7
8
9
10
data=[ 0x23, 0x30, 0x2F, 0x2A, 0x3A, 0x3F, 0x29,0x78, 0x7E, 0x39, 0x30, 0x6A, 0x3A, 0x10, 0x3A, 0x25, 0x3E, 0x79, 0x2C, 0x08, 0x34, 0x38, 0x79,
0x21, 0x24, 0x39,0x53]
key='gigem'
data_key=[0]*len(data)
for i in range(len(data)):
data_key[i]=data[i]^(ord(key[i%5]))
for i in range(len(data)):
data[i]=data[i]^(data_key[i%5])
flag=''.join(chr(i) for i in data)
print(flag)

gigem{p01nt3r_mag1c_pa1ns}

还存了点题目,要抓紧辣。