전체 글 (210) 썸네일형 리스트형 드림핵 blind-command 롸업 Read the flag file XD #!/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) 구성 코드가 상당히 짧다. GET이 아니라 다른 방식으로 요청을 보내면 system 명령어를 사용해 cat flag.py로 플래그를 얻을 .. 드림핵 Carve Party 롸업 할로윈 파티를 기념하기 위해 호박을 준비했습니다! 호박을 10000번 클릭하고 플래그를 획득하세요! 서버를 생성해서 링크에 접속해서 푸는 문제가 아니라 그냥 html 파일이 주어진다. 그 말은 정해진 플래그가 어딘가에 숨어있다는 뜻인데 html 파일을 읽어봐도 생전 처음보는 함수가 많아서 플래그가 어디서 어떤 변수에 저장되서 나오게 되는건지 모르겠다 웹 브라우저에서 개발자 도구에서 Ctrl+Shift+f로 전체 검색 DH를 해봐도 안 나온다. $(function() { $('#jack-target').click(function () { counter += 1; if (counter 드림핵 web-ssrf 롸업 flask로 작성된 image viewer 서비스 입니다. SSRF 취약점을 이용해 플래그를 획득하세요. 플래그는 /app/flag.txt에 있습니다. @app.route("/img_viewer", methods=["GET", "POST"]) def img_viewer(): if request.method == "GET": return render_template("img_viewer.html") elif request.method == "POST": url = request.form.get("url", "") urlp = urlparse(url) if url[0] == "/": url = "http://localhost:8000" + url # URL 필터링 elif ("localhost" in url.. ServerSide: SSRF SSRF는 웹 서비스의 요청을 변조하는 취약점으로, 브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청을 보낼 수 있다. 웹 서비스가 보내는 요청을 변조하기 위해서는 요청 내에 이용자의 입력값이 포함돼야 한다. 입력값이 포함되는 예시로는 웹 서비스가 이용자가 입력한 URL에 요청을 보내거나 요청을 보낼 URL에 이용자 번호와 같은 내용이 사용되는 경우, 그리고 이용자가 입력한 값이 HTTP Body에 포함되는 경우로 나눠볼 수 있다. from flask import Flask, request import requests app = Flask(__name__) @app.route("/image_downloader") def image_downloader(): # 이용자가 .. 드림핵 file-download-1 롸업 File Download 취약점이 존재하는 웹 서비스입니다. flag.py를 다운로드 받으면 플래그를 획득할 수 있습니다. @APP.route('/upload', methods=['GET', 'POST']) def upload_memo(): if request.method == 'POST': filename = request.form.get('filename') content = request.form.get('content').encode('utf-8') if filename.find('..') != -1: return render_template('upload_result.html', data='bad characters,,') with open(f'{UPLOAD_DIR}/{filename}', 'w.. 드림핵 image-storage 롸업 php로 작성된 파일 저장 서비스입니다. 파일 업로드 취약점을 이용해 플래그를 획득하세요. 플래그는 /flag.txt에 있습니다. upload 부분을 보면 파일에 대한 검사를 하지 않기 때문에 php 코드를 올릴 수 있다. 이런 파일을 하나 만들어서 올리고, list 페이지로 가서 조회해보면 php 코드가 실행되면서 flag가 뜬다. 드림핵에서 제시한 풀이는 웹 셸을 올리는 방법이다. ServerSide: File Vulnerability 이미지나 문서 등의 파일 업로드 기능이 존재하는 웹 서비스에는 파일과 관련된 취약점이 존재한다. 파일 업로드와 관련된 취약점은 파일 업로드 취약점(File Upload Vulnerability)이고, 파일 다운로드와 관련된 취약점은 파일 다운로드 취약점(File Download Vulnerability)라고 한다. Path Traversal 취약점은 업로드를 할 때 임의 디렉터리에 파일을 업로드할 수 있는 취약점이다. from flask import Flask, request app = Flask(__name__) @app.route('/fileUpload', methods = ['GET', 'POST']) def upload_file(): if request.method == 'POST': f = re.. 드림핵 command-injection-1 롸업 특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. @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.Timeo.. 이전 1 ··· 18 19 20 21 22 23 24 ··· 27 다음