南邮CTF逆向题第六道WxyV2解题思路

来源:互联网 发布:淘宝客宣传图片 编辑:程序博客网 时间:2024/06/02 06:50

如题

看提示应该与第四道题WxyVM一样是ELF文件 那么我们直接上IDAx64

http://blog.csdn.net/xiangshangbashaonian/article/details/78883486

 

首先找到main函数

还是习惯性查看下可疑字符串

按下F5查看伪代码(中间有大段 我省略截图了)

这次就不一行一行分析了 大致意思是:

获取一个字符串存放到地址694100处

限制长度为25

那么如果要对这个字符串进行操作 只会从694100进行相应操作 那么其他的自然就是混淆我们 又可以清楚的看到 有效的操作都是以byte型进行 那么dword的我们直接过滤掉即可

 

 

a=[0xffffffC0,0xffffff85,0xffffffF9,0x6C,0xffffffE2,0x14,0xffffffBB,0xffffffe4,0xd,0x59,0x1c,0x23,0xffffff88,0x6e,0xffffff9b,0xffffffca,0xffffffba,0x5c,0x37,0xffffffff,0x48,0xffffffd8,0x1f,0xffffffab,0xffffffa5]

 

f= open('key.txt')#过滤后的txt文本自增自减的直接格式改下

 

for bin f.readlines()[::-1]:

 

if b[3]=='+':

 

if'x'in b:

 

a[int(b[:2],16)]-= int(b[8:],16if'x'in b else10)

 

else:

 

a[int(b[:2],16)]-= int(b[6:],10)

 

if b[3]=='-':

 

if'x'in b:

 

a[int(b[:2],16)]+= int(b[8:],16)

 

else:

 

a[int(b[:2],16)]+= int(b[6:],10)

 

if b[3]=='^':

 

if'x'in b:

 

a[int(b[:2],16)]^= int(b[8:],16)

 

else:

 

a[int(b[:2],16)]^= int(b[6:],10)

 

flag=""

 

for iin a:

 

flag+= chr(i%256)

 

print flag

 

flag:nctf{th3_vM_w1th0ut_dAta}

原创粉丝点击