728x90

문제 코드
#!/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)


cmd에 값을 넣어보라는데
값이 그대로 나왔다
문제 코드를 보면
/루트에서 진행하는데
get 방식으로 받았을 때 cmd에 있는 값이 get 으로 들어간다면
cmd가 작동하지 않는다는 것을 알 수 있다
그렇다면
get 방식이 아닌 다른 방식을 사용해야 하는데
코드상 method=['get']만 되어있다고 해서
get 방식만 사용할 수 있는것은 아니다
따라서
options 메서드를 사용해서 사용가능한 메서드를 확인할 것이다
burp suit를 사용해 options 메서드 진행

response를 보면 options, get, head가 가능한 것을 볼 수있다
그렇다면 head 메서드를 사용해
cmd를 사용할 수 있게 되었다
하지만 결과를 볼 수 없으니
flag가 어디있는지 확인할 수가 없다
그렇다면 curl을 입력하도록 cmd를 조작해
드림핵 툴인 request에 값을 보내도록 진행할 수 있다

cmd 부분에 curl 을 입력했다
+를 사용하는 이유는
burpsuit를 사용할때 띄어쓰기는 한 url로 인식하지 않기 때문이다

현재 디렉토리에 flag.py가 있는것을 확인할 수 있다
이를 읽으면 되겠다
ls 명령어 부분에 cat+flag.py만 입력했다

flag 획득 성공
'웹해킹' 카테고리의 다른 글
| [드림핵] pathtraversal 풀이 (0) | 2024.11.03 |
|---|---|
| [드림핵] Carve Party 풀이 (0) | 2024.11.02 |
| [드림핵] web-ssrf 풀이 (0) | 2024.10.12 |
| [드림핵] command-injection-1 풀이 (0) | 2024.10.10 |
| [드림핵] Mango 풀이 (0) | 2024.10.10 |