문제


LAB 1은 /dev/urandom에서 4byte의 랜덤값을 읽어온 뒤 scanf를 통해서 입력을 받는다.

그리고 입력값과 랜덤값이 같으면 loop를 돈다. loop에서는 stack에 미리 저장해놓은 데이터 끼리 xor을 한 뒤 putchar를 통해서 출력을 한다.

이 출력값을 알기 위해서 peda의 dumpmem을 이용해 stack에 저장되어 있는 데이터들을 dump한 뒤 xor 복호화하는 코드를 짰다.

풀이


#!/usr/bin/python


data=open("/home/sungyun/HITCON-Training/LAB/lab1/text",'r')
enc=data.read()
data.close()

data=open('/home/sungyun/HITCON-Training/LAB/lab1/key','r')
key=data.read()
data.close()

# dumpmem한 데이터 읽어오는 코드

anw=""

for i in range(0x30+1):

	anw+=chr(ord(enc[i])^ord(key[i]))

print anw