OutDoorFrog의 리버싱 이야기

Reversing.kr [Easy_ELF] 본문

공부/사이트 문제 풀이

Reversing.kr [Easy_ELF]

OutDoorFrog 2018. 11. 3. 13:11

재활치료 중인 개구리, OutDoorFrog입니다!





고인물짤에 대한 이미지 검색결과



0. 인사말


윈도우 아키텍처를 어떻게 설명드릴까... 고민하던 중 어떤 분께서 리버싱케알 문제에 대해서 

언급을 해주셨습니다.


요즈음 온라인 CTF세미나에 참가하느라 정신이 없었는데 조언을 해주신 분께 감사의 말씀을 

전해드리고 싶습니다.


재활 치료 중이니 난이도가 그나마 쉬운 문제부터 천천히 풀겠습니다!


(까먹고 있었는데 정말 감사합니다.)



1. IDA를 이용한 풀이



이번 풀이는 아이다 디컴파일러를 이용해서 트레이싱 없이 진행할 예정입니다. (도구최고)




main 함수를 찾아 디컴파일 해봅시다.




이미 풀었기 때문에 각 함수마다 역할에 알맞은 이름을 붙인 상태입니다.



Input 함수 : scanf 함수를 호출하고, 문자열을 입력받습니다.

judgement 함수 : 문자열을 판단해서 BOOL 값을 반환합니다.

print_correct 함수 : correct라는 문자열을 출력합니다.


리버싱해야할 함수는 judgement가 되겠죠?



byte_804A020(첫번째) ~ byte_804A025(6번째)까지 총 6글자를 가지고 결과를 판단하네요.



한 글자마다 역산해주면 결과값이 나옵니다.


1번째 글자 = 0x34(HEX) ^ 120(DEC)

2번째 글자 = 49(DEC)                

3번째 글자 = 0x32(HEX) ^ 124(DEC)

4번째 글자 = 0x88(HEX) ^ -35(DEC)

5번째 글자 = 88(DEC)                

6번째 글자 = 공백                     



역산 결과를 가지고 인증을 해봅시다.




이렇게 디컴파일러를 이용할 수 있는 문제는 실행조차 안하고도 풀 수 있는 경우가 있습니다.




이런 문제가 나온다면 "출제자님 아리가또!!" 하면서 풉시다. 


 

'공부 > 사이트 문제 풀이' 카테고리의 다른 글

Reversing.Kr [HateIntel]  (0) 2019.01.03
Reversing.Kr [Csharp]  (0) 2019.01.03
Reversing.kr [Music Player]  (0) 2019.01.01
CodeEngn.com [Advanced] 2  (1) 2018.09.22
CodeEngn.com [Advanced] 1  (2) 2018.09.18
Comments