1. 程式人生 > 其它 >攻防世界 Reverse高手進階區 2分題 re4-unvm-me

攻防世界 Reverse高手進階區 2分題 re4-unvm-me

技術標籤:ctfmd5攻防世界ctfreverse

前言

繼續ctf的旅程
攻防世界Reverse高手進階區的2分題
本篇是re4-unvm-me的writeup

發現攻防世界的題目分數是動態的
就僅以做題時的分數為準了

解題過程

得到一個pyc

反編譯

#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
import md5
md5s = [
    0x831DAA3C843BA8B087C895F0ED305CE7L,
    0x6722F7A07246C6AF20662B855846C2C8L,
    0x5F04850FEC81A27AB5FC98BEFA4EB40CL,
0xECF8DCAC7503E63A6A3667C5FB94F610L, 0xC0FD15AE2C3931BC1E140523AE934722L, 0x569F606FD6DA5D612F10CFB95C0BDE6DL, 0x68CB5A1CF54C078BF0E7E89584C1A4EL, 0xC11E2CD82D1F9FBD7E4D6EE9581FF3BDL, 0x1DF4C637D625313720F45706A48FF20FL, 0x3122EF3A001AAECDB8DD9D843C029E06L, 0xADB778A0F729293E7E0B19B96A4C5A61L,
0x938C747C6A051B3E163EB802A325148EL, 0x38543C5E820DD9403B57BEFF6020596DL] print 'Can you turn me back to python ? ...' flag = raw_input('well as you wish.. what is the flag: ') if len(flag) > 69: print 'nice try' exit() if len(flag) % 5 != 0: print 'nice try' exit() for i in range
(0, len(flag), 5): s = flag[i:i + 5] if int('0x' + md5.new(s).hexdigest(), 16) != md5s[i / 5]: print 'nice try' exit() continue print 'Congratz now you have the flag'
  • flag長度小於69且是5的倍數
  • 然後每5個一組與md5對比

那就是個解md5嘛
https://www.cmd5.com/
在這裡插入圖片描述
一個個解得到

ALEXC
TF{dv
5d4s2
vj8nk
43s8d
8l6m1
n5l67
ds9v4
1n52n
v37j4
81h3d
28n4b
6v3k}

所以flag就是ALEXCTF{dv5d4s2vj8nk43s8d8l6m1n5l67ds9v41n52nv37j481h3d28n4b6v3k}

結語

就是md5