본문 바로가기

웹해킹

[드림핵] blind-command 풀이

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