[Dreamhack] DreamSanta's Present
[Dreamhack] DreamSanta's Present
문제 링크
https://dreamhack.io/wargame/challenges/404
문제 설명
크리스마스 기념 드림산타가 선물을 준비했어요!! 취약점, 플래그, 쉘도 맘대로 준다던데..?
문제 분석
- 1번 메뉴를 이용하면
gets
함수를 이용하여 입력할 수 있어 스택 버퍼 오버플로우가 발생한다.- 하지만 canary, libc 등을 leak할 방법이 없으므로 활용이 불가하다.
- 2번 메뉴를 이용하면 “/home/ctf/flag” 파일을 읽어온 후 0~2번째 인덱스까지의 데이터만을 보여준다.
- 여기서 중요한 것은, 파일을 연 후 닫지 않는다는 것이다.
- 3번 메뉴를 이용하면
system("/bin/sh")
를 실행해준다. 하지만 권한이 root가 아니므로 플래그 파일을 읽을 수 없다.- 하지만 셸을 획득했고, 홈 디렉터리에 쓰기 권한이 있으므로 이를 이용해 임의 바이너리를 실행할 수 있다.
- 파일 디스크립터의 경우 기본적으로 자식 프로세스에 상속되므로, “/home/ctf/flag” 파일의 파일 디스크립터 값을 이용하여 read-write하는 바이너리를 작성하고 셸에서 실행하면 플래그를 읽어올 수 있다.
새롭게 알게된 점
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.