CTF Cite : https://play.picoctf.org
1. babygame01
- WASD키로 움직이는 게임에서 FLAG를 획득하는 문제이다.
- 먼저, 게임에 접속해 [@]가 있는 곳까지 움직여보았다. "You win!"만 출력될 뿐, FLAG는 출력되지 않았다.
- 문제 힌트를 통해 시크릿 커맨드가 있는 것을 알 수 있었고, 이를 Ghidra를 이용하여 확인해보았다.
- 두번째 if문을 통해 [p]가 시크릿 커맨드인 것을 발견할 수 있었다. 게임을 다시 시작하고, [p]를 누르면 바로 [@]의 위치까지 이동해 "You win!"만 출력한다.
- 그 다음 IDA를 이용해 메모리와 코드를 분석해보았다.
- 변수 v6과 v7을 살펴보면 다음과 같다.
v6 : var_A9C
v7[2700] : var_A98
- 이를 통해 v6와 v7 사이에 4byte가 있는 것을 알 수 있었고, v6에 접근하여 [p]를 입력하면 FLAG를 얻을 수 있을 것이라 생각했다.
- 따라서, 원점으로 이동한 뒤,
- [a]를 4번 눌러 왼쪽으로 4칸 이동했다.
- 그 후 [p]를 누르면 FLAG가 출력된다.
2. VNE
- root 권한인 파일을 ls 명령어를 이용해 실행하는 문제이다.
- 인스턴스를 실행하고, 서버에 접속한다.
- 그 후 [ls], [ls -al] 명령어를 이용하여 현재 어떤 파일과 디렉토리가 있는지 확인해보았다.
- 이때, bin 파일이 root에 속하고 있으며 setuid 플래그가 설정되어 있는 것을 확인할 수 있다. 이는 bin 파일을 실행할 때 해당 프로세스가 파일의 소유자인 root 사용자의 권한으로 실행된다는 것을 의미한다.
- bin 파일을 실행해보니, SECRET_DIR이 설정되지 않아 오류가 발생한 것을 확인할 수 있었다.
- SECRET_DIR의 값을 /root로 설정해보니 flag.txt를 확인할 수 있었다.
- 따라서, SECRET_DIR의 값을 /root로 설정하고 동시에 flag.txt를 읽을 수 있도록 명령어를 입력하면 FLAG가 출력되는 것을 볼 수 있다.
'4-2. 2024-1 심화 스터디 > 워게임 도장 깨기' 카테고리의 다른 글
[6주차] 2024.05.10- Reversing War Game Write Up (0) | 2024.05.17 |
---|---|
[5주차] 2024.05.03 - Pwnable War Game Write Up (0) | 2024.05.10 |
[4주차] 2024.04.05 - Web War Game Write Up (0) | 2024.04.05 |
[2주차] 2024.03.14 - Reversing War Game Write Up (1) | 2024.03.22 |
[1주차] 2024.03.11 - Web War Game Write Up (0) | 2024.03.15 |