南郵CTF逆向題第六道WxyV2解題思路
如題
看提示應該與第四道題WxyVM一樣是ELF檔案 那麼我們直接上IDAx64
首先找到main函式
還是習慣性檢視下可疑字串
按下F5檢視虛擬碼(中間有大段 我省略截圖了)
這次就不一行一行分析了 大致意思是:
獲取一個字串存放到地址694100處
限制長度為25
那麼如果要對這個字串進行操作 只會從694100進行相應操作 那麼其他的自然就是混淆我們 又可以清楚的看到 有效的操作都是以byte型進行 那麼dword的我們直接過濾掉即可
a
=[0xffffffC0,0xffffff85,0xffffffF9,0x6C,0xffffffE2,0x14,0xffffffBB,0xffffffe4,
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(
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}