Re4newer
解題思路:
Step1:die打開,發現有upx殼。

Step2:脫殼,執行upx -d 文件名即可。

Step3:IDA打開,shift+F12看字符串。

點進去,F5看偽代碼如圖。

Step4:逆算法。點進sub_401080可以看到關鍵函數的算法。

是簡單的取字節異或,比較對象是v4-v14的值。

可以看到,這里可以分成44個兩位16進制的數,并且順序與箭頭所指的數的大小有關。
Step4:得到flag。
pyhon腳本如下:
a = [0x45,0x43,0x4E,0x44,
0x13,0x4A,0x76,0x59,
0x71,0x4B,0x7D,0x51,
0x54,0x7D,0x63,0x7D,
0x7D,0x5B,0x50,0x11,
0x52,0x4F,0x4B,0x51,
0x70,0x7D,0x47,0x4E,
0x67,0x67,0x70,0x70,
0x7D,0x57,0x7D,0x67,
0x71,0x51,0x63,0x52,
0x5F,0x56,0x13,0x7D]
flag = ''
for i in range(11):
for j in [3,2,1,0]:
flag += chr( a[i*4+j]^0x22)
print(flag)
2017湖湘杯-Writeup