웹해킹 (116) 썸네일형 리스트형 드림핵 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.. ServerSide: Command Injection 웹 애플리케이션 제작용 언어는 시스템에 내장되어 있는 프로그램들을 호출할 수 있는 함수들을 지원한다. PHP는 system, Nodejs는 child-process, 파이썬은 os.system 등이 있다. 이런 함수들은 인자를 셸 프로그램에 전달한다. Command Injection 취약점은 명령어를 실행해주는 함수를 잘못 사용하여 발생하는 취약점이다. 셸 프로그램은 다양한 메타 문자를 지원한다. &&, ;, | 는 여러 개의 명령어를 연속으로 실행시킬 수 있다. @app.route('/ping') def ping(): ip = request.args.get('ip') return os.system(f'ping -c 3 {ip}') Command Injection이 발생하는 예제 코드이다. ping 명령.. 이전 1 ··· 10 11 12 13 14 15 다음