728x90
[๋ฌธ์ ]
https://dreamhack.io/wargame/challenges/768
[๋ฌธ์ ํ์ด]
- ๋จผ์ ํ์ด์ง๋ฅผ ๋ถ์ํด ๋ณด๋ ํธ์คํธ ์ ๋ ฅ์ ํตํด ping ๋ช ๋ น์ด๋ฅผ ์ํํ ์ ์๋๋ก ๋์ด์๋ค.
#!/usr/bin/env python3
import subprocess
from flask import Flask, request, render_template, redirect
from flag import FLAG
APP = Flask(__name__)
@APP.route('/')
def index():
return render_template('index.html')
@APP.route('/ping', methods=['GET', 'POST'])
def ping():
if request.method == 'POST':
host = request.form.get('host')
cmd = f'ping -c 3 {host}'
try:
output = subprocess.check_output(['/bin/sh', '-c', cmd], timeout=5)
return render_template('ping_result.html', data=output.decode('utf-8'))
except subprocess.TimeoutExpired:
return render_template('ping_result.html', data='Timeout !')
except subprocess.CalledProcessError:
return render_template('ping_result.html', data=f'an error occurred while executing the command. -> {cmd}')
return render_template('ping.html')
if __name__ == '__main__':
APP.run(host='0.0.0.0', port=8000)
- ๊ทธ๋ค์ ์ฝ๋๋ฅผ ๋ถ์ํด๋ณด๋ฉด, @APP.route('/ping', methods=['GET', 'POST']): ๋ถ๋ถ์์ /ping ๊ฒฝ๋ก์ ๋ํ GET ๋ฐ POST ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- ping ํจ์๋ POST ์์ฒญ์์ host ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ธ์ ping ๋ช ๋ น์ ์คํํ๋ค. subprocess.check_output์ ์ฌ์ฉํ์ฌ ๋ช ๋ น์ด ์คํ ๊ฒฐ๊ณผ๋ฅผ ์บก์ฒํ ๋ค ๋ช ๋ น์ด๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ping_result.html ํ ํ๋ฆฟ์ ์ ๋ฌํ๋ค.
- ping ๋ช ๋ น์ด๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก ๋ช ๋ น์ด ์ฃผ์ ๊ณต๊ฒฉ์ ์ทจ์ฝํ์ฌ ์ด๋ฅผ ์ด์ฉํด ;, & ๋ฑ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์๋ค.
- ๋ฌธ์ ์ค๋ช ์์ ํ๋๊ทธ๋ flag.py์ ์๋ค๊ณ ํ์ผ๋ ;๋ฅผ ์ด์ฉํด ์ถ๊ฐ ๋ช ๋ น์ด๋ฅผ ์คํํด๋ณด์.
- ๊ทธ ๊ฒฐ๊ณผ, flag๋ฅผ ํ๋ํ ์ ์์๋ค!
'๋ณด์ > CTF' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ชจ์์นจํฌ] | [RCity] 1.Linux ๋ช ๋ น์ด - Operation RCity1 (0) | 2025.01.19 |
---|---|
[๋ชจ์์นจํฌ] | [RCity] 1.Linux ๋ช ๋ น์ด - Operation RCity0 (0) | 2025.01.19 |
[Webhacking.kr] old-24 write-up (0) | 2025.01.12 |
[์นํดํน] | [๋๋ฆผํต]: baby-Case (0) | 2025.01.11 |
[Webhacking.kr] old-18 write-up (0) | 2025.01.05 |