※ pwnable.kr의 워게임 flag 문제이다.
1. 프로그램 분석
1)flag 실행 파일만 있기 때문에 실행 파일을 실행시켜 보았다. 동적 메모리를 할당하고 flag가 그 메모리에 복사되어 진다고 한다.
2) 그래서 flag 실행 파일을 gdb로 분석을 하려고 하였다. 하지만 main함수를 찾을 수 없었다.
3) flag 실행 파일을 cat으로 출력하여 보았다. UPX라는 단어가 보인다.
4) UPX는 패킹 도구 중 하나이다. 패킹은 파일의 크기를 줄이기 위해 압축하는 것이다. 파일 코드를 숨기기 위해 패킹을 하기도 한다. 그러므로 실행 파일을 UPX 언패킹을 시켜 gdb로 분석할 것이다.
2. 풀이
1) UPX 언패킹을 할 것이다. UPX 언패킹은 오픈소스로 gitgub에 있기 때문에 설치하여 사용하면 된다.
Releases · upx/upx
UPX - the Ultimate Packer for eXecutables. Contribute to upx/upx development by creating an account on GitHub.
github.com
2) 최신 버전을 설치하고 같은 폴더에 위치시킨다.
3) flag 실행 파일을 UPX 언패킹을 한다.
4) 이제 flag 실행파일을 gdb로 분석하면 된다. gdb로 실행하였고 main 함수를 분석할 것이다.
3. 익스플로잇
1) main 함수를 디스어셈블 해본다. 빨간 줄이 의심스럽기 때문에 <main+39>에 break를 걸고 실행시켜 본다.
2) <main+32>줄에서 flag를 rdx에 옮기기 때문에 rdx를 확인해보면 flag가 있는 것을 알 수 있다.
'Wargame > [pwnable.kr]' 카테고리의 다른 글
[pwnable.kr] passcode 문제 풀이 (1) | 2023.07.29 |
---|---|
[pwnable.kr] random 문제 풀이 (0) | 2023.07.29 |
[pwnable.kr] bof 문제 풀이 (0) | 2022.08.20 |
[pwnable.kr] collision 문제 풀이 (0) | 2022.08.19 |
[pwnable.kr] fd 문제 풀이 (0) | 2022.08.19 |