您的位置:首页 > 其它

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

2017-12-24 11:42 507 查看
如题



看提示应该与第四道题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 b
in 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 i
in a:
 
flag
+= chr(i%256)
 
print flag
 

flag:nctf{th3_vM_w1th0ut_dAta}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: