문제
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