Reversing.kr Easy ELF

Reversing/리버싱 문제풀이

2015. 12. 8. 18:43



실행을 하고 아무거나 입력을 하면 Wrong이 뜬다.

IDA로 킨 후 살펴보았다.



간단한 구조로 되어있는 것을 볼 수 있다.

출력을 한 후, 2개의 함수를 거치고 eax가 1이면 Correct가 출력이 된다.

두 함수를 살펴 보았다.


첫번째 함수인데 scanf를 호출한다.

byte_804A020에 버퍼가 있다는 것을 확인한 후 다음 함수로 넘어갔다.







다음함수의 일부이다. 

byte_804A020가 첫번째 글자이므로 

두번째 글자는 0x31이고, 

첫번째 글자와 34를 xor하고 al을 다시 그 자리에 대입한다.

세번째 글자와 32를 xor하고 al을 다시 그 자리에 대입한다.

네번째 글자와 0xffffff88를 xor하고 al을 다시 그자리에 대입한다.

다섯번째 글자가 0x58인지 확인을 한다.

byte_804A025가 0인지 확인을 하므로 총 5글자임을 알 수 있다.




다음 흐름을 보면 세번째 글자가 0x7c인지 확인,

첫번째 글자가 0x78인지 확인,

네번째 글자가 0xdd인지 확인을 한다.


따라서 1,3,4 번째 글자만 xor연산을 해주면 간단하게 나온다.