본문 바로가기

카테고리 없음

dreamhack 1118

반응형
from Crypto.Cipher import DES
from pwn import *
import binascii


p = remote("host3.dreamhack.games", 12520)

p.recvuntil(b"> ")
hint = bytes.fromhex(p.recvline().strip().decode("utf-8"))

r1 = {}


for i in range(0xFFFF + 1):
    k = b'Dream_' + i.to_bytes(2, 'big')
    enc = DES.new(k, DES.MODE_ECB).encrypt(b'DreamHack_blocks')
    r1[enc] = k

for i in range(0xFFFF + 1):
    k = i.to_bytes(2, 'big') + b'Hacker'
    dec = DES.new(k, DES.MODE_ECB).decrypt(hint)
    if dec in r1:
        k1 = r1[dec]
        k2 = k
        break


payload = DES.new(k2, DES.MODE_ECB).encrypt(DES.new(k1, DES.MODE_ECB).encrypt(b'give_me_the_flag'))
payload = binascii.hexlify(payload)
p.recvuntil(b"> ")
p.sendline(payload)

print(p.recvline().decode())
반응형