题目:http://www.shiyanbar.com/ctf/28
1.附件
软件
2.PEID打开,Microsoft Visual C++ 6.0
3.OD打开,找到关键代码段,在关键处下好断点
4.进入0040101F CALL中
不想看,用IDA打开,视图打开CALL中部分
F5反编译,分部分考虑
5.开始分析
a1为用户输入的字符串,需要返回1
V5是解题关键,下文会说明
1.输入的字符串KEY长度要等于V5
2.将用户输入的KEY逐个异或0x20
3.将V5逐个减5
4,逐个比较 改变后的V5 与 改变后KEY 是否相等
6.我们只要将V5逐个 - 5,在逐个异或0x20就可以得到我们应输入的KEY(FLAG)。
V5的值可以看上文
继续使用OD,因为V5是字符串,所以指向的是该字符串的首地址,则V5为 68 5719 48 50 6e 58 78 54 6a19 58 5e 06(都为十六进制)
7,python解码
a = ''
code=(0x68,0x57,0x19,0x48,0x50,0x6e,0x58,0x78,0x54,0x6a,0x19,0x58,0x5e,0x06)
for i in code:
i=(i-5)^0x20
a += chr(i)
print(a)
FLAG:Cr4ckIsSoE4sy!
网友评论