본문 바로가기

Dreamhack

[Dreamhack 문제 풀이 _blind-command]

 

해당 문제를 풀기 위해서, 서버 생성하기 버튼을 클릭하고 문제 파일을 다운로드하였습니다. 

 

 

생성된 서버에 들어가 보니, 해당과 같은 화면이 나타난다는 사실을 알 수 있었습니다. 

 

문제의 코드 파일을 다운 받아 살펴보니, cmd 인자에 [cmd] 값을 입력받는다는 사실과

request.method 가 get이 아니면 os.system()의 인자로 들어온 명령어를 실행한다는 사실을 알 수 있었습니다. 

 

먼저, cat 명령어를 이용하여 ?cmd=cat flag.py를 보내면 어떤 값이 전달되는지 

burp suite를 통해 확인해보도록 하겠습니다.   

 

 

 

지난번과 같이, burp suite를 사용하기 위한 환경을 마련합니다.

 

 

해당 과정을 거친 뒤에, burp suite를 통하여 브라우저를 열고 우리가 생성했던 서버의 url을 복사해서 넣어줍니다.

서버의 url을 복사하여 넣어주면 위와 같은 화면이 나타남을 알 수 있습니다. 

 

우리는 이제, 위에서 언급한 것처럼 ?cmd=cat flag.py를 보내면 어떤 값이 전달되는지 확인해 보도록 하겠습니다.

 

 

위의 과정을 통하여 ?cmd=cat flag.py를 보내면 어떤 값이 전달되는지 확인해 보았습니다. 

 

그랬더니, GET 방식으로 cat flag.py가 전달된다는 사실을 알 수 있었습니다. 

 

os.system()으로 명령어를 실행시킬려면 GET 방식이 아니어야 하고 , HEAD 방식으로 데이터를 보내줘야 합니다.

또한 서버에서 명령어를 실행한 결과를 보기 위하여 해당 결과를 외부로 전송해 주는 과정이 필요합니다. 

 

https://tools.dreamhack.games/

 

dreamhack-tools

 

tools.dreamhack.games

 

그렇기에 해당 과정에서, 사이트의 Request Bin 기능을 사용하여  명령어 실행 결과를 확인해 보았습니다. 

 

curl [요청을 보낼 url 주소] -d “$(cmd 명령)”  의 명령어의 해당하는 내용에는, 

[요청을 보낼 url 주소]는 Dreamhack Tools에서 복사한 링크를 기입하고 cmd 명령에는 cat flag.py가 됩니다. 

 

 

 

해당 명령어를 burp suite를 통해 보내고, 드림핵 tool에 들어가 보면 Body에 flag가 나타남을 확인할 수 있습니다. 

 

해당 flag를 문제에 입력하면, 

 

 

문제 풀이 완-료!