[Cryptanalysis] Service - Timing attack

맨 처음에는 뭐 어쩌란건가 싶었는데, 인위적으로 키의 앞부분이 일치할 경우 비교 과정을 다소 느리게 만들어놨습니다. 이를 이용해 timing attack을 하면 됩니다.

from pwn import *
import time, string
st = time.time()
p = remote("challenge01.root-me.org", 51015)
print(p.recvline())


def timing_test(s):
    st = time.time()
    p.sendline(s)
    p.recvline()
    return time.time()-st


key = ''
for i in range(12):
    for c in string.printable:
        print(c)
        if timing_test(key+c) >= 0.5*len(key)+0.5:
            if timing_test(key+c) >= 0.5*len(key)+0.5:
                if timing_test(key+c) >= 0.5*len(key)+0.5:
                    key += c
                    break
    print(key)
  Comments