본문 바로가기

blind-command 본문

wargame/DreamHack

blind-command

Seongjun_You 2022. 6. 2. 15:50

웹 해킹 로드맵 1page의 마지막 문제이다

웹 해킹의 경험이 없어 이번 문제는 굉장히 어려웠다.

 

#!/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메소드가 아닐경우 system함수가 먹힌다.

그렇다면 GET메소드 말고 다른 메소드를 사용할수 있다는것을 짐작할수 있었다.

 

 

burp suite를 사용했다.

처음 써보는거라 너무 방황했다.

먼저 GET메소드를 POST로 바꾸고 Forward를 해보았다.

 

허용되지 않은 메소드라 출력이된다.

HEAD메소드로 바꾸어 진행하니

빈 공백만 출력되었다.

실행 결과를 확인할 수 없어 외부로 데이터를 전달하기로 했다.

 

https://tools.dreamhack.games/requestbin/

 

Webpack App

 

tools.dreamhack.games

드림핵에서 제공하는 requestbin을 이용했다.

curl이나 wget을 사용시 외부로 데이터를 전달할수 있다고 한다.

 

 

다음과 같이 파라미터를 전송했다. 공백을 %20으로 바꾸지 않아 삽질을 했다.

 

 

Body에 데이터가 들어와있었다.

동일한 방법으로 flag.py데이터를 전송시켰다.

 

너무 어려웠다.

다른 사람의 풀이를 보면

burp suite를 통해 allow 메소드를 확인하던데

나는 그 방법을 찾지 못해 힘들었다.

 

 

'wargame > DreamHack' 카테고리의 다른 글

Heap Basic 1  (0) 2022.06.13
You shall not pass  (0) 2022.03.21
linked_list  (0) 2022.03.21
HEAP_AEG  (0) 2022.03.09
public  (0) 2022.02.28
Comments