-
Dreamhack - Simple Patch Mewargame/Dreamhack 2024. 11. 26. 12:06
[LEVEL 1 - Simple Patch Me - reversing]
실제 시간으로 365일이 지나면 플래그를 출력하는 프로그램이 주어진다.
프로그램을 패치하여 플래그를 획득하라고 되어있다.
일단 ida로 열어보면 main함수가 위와 같이 나온다.
위 프로그램은 8760시간(365*24)이 지나지 않으면 1시간동안 sleep하고, 그 후 변수가 1 증가한다.
dword_40404C를 8760으로 바꾸거나 sleep(0)으로 바꾸면 플래그를 얻을 수 있을 것으로 보인다.
플래그를 출력하는 함수로 들어가본다.
개인적으로 그냥 궁금해서 __readfsqword() 함수가 뭔지 찾아보았다.
__readfsbyte, __readfsdword, __readfsqword, __readfsword
자세한 정보: __readfsbyte, __readfsdword, __readfsqword, __readfsword
learn.microsoft.com
위 msdn 링크에서 함수 설명을 참고했다.
다시 원래 목적으로 돌아가서 sleep(0)으로 바꾸기 위해서 위 어셈블리 화면에서 3600을 0으로 패치해야 한다.
상단 Edit 탭에서 Patch Program을 선택하고 Assemble을 누른 후 0으로 바꾸고 OK 누르면 된다.
0으로 패치가 되었다.
참고로 Patched bytes에서 배치된 코드를 볼 수 있다.
해당 파일은 ELF 파일이기 때문에 리눅스에서 실행을 해줄거다.
패치된 프로그램을 실행시켰더니 플래그가 출력되었다.
플래그를 획득했다!
'wargame > Dreamhack' 카테고리의 다른 글
Dreamhack - [wargame.kr] strcmp (0) 2024.11.13 Dreamhack - [wargame.kr] fly me to the moon (0) 2024.11.13 Dreamhack - php-1 (0) 2024.11.05 Dreamhack - simple-ssti (0) 2024.11.05 Dreamhack - proxy-1 (0) 2024.10.08