반응형

WEB hacking/드림핵(dreamhack) 32

드림핵 simple_sqli_chatgpt WriteUp

문제 설명SQL Injection 문제이다.문제 풀이코드 해석DATABASE = "database.db"if os.path.exists(DATABASE) == False: db = sqlite3.connect(DATABASE) db.execute('create table users(userid char(100), userpassword char(100), userlevel integer);') db.execute(f'insert into users(userid, userpassword, userlevel) values ("guest", "guest", 0), ("admin", "{binascii.hexlify(os.urandom(16)).decode("utf8")}", 0);') d..

드림핵 Relative Path Overwrite Advanced WriteUp

문제 설명RPO의 패치된 문제이다.문제 풀이vuln 페이지에 접속한 경우 filter.js 파일을 불러오지 못하고 있다. 왜 그런지 vuln.php의 코드를 살펴봐야겠다. Vuln.php 소스코드filter.js의 파일을 불러오고 있으며 filter를 못불러올 경우 nope!!을 출력한다. filter를 불러오면 필터링을 시작한다.하지만 filter을 못불러오고있다. filter.js를 못불러올 경우 404.php코드가 실행된다.404.php404.php는 입력한 url을 echo명령어로 그대로 출력하기 때문에 XSS 취약점이 발생할 수 있다. index.php/;alert(1);//?page=vuln&param=dreamhack 에서 자바스크립트를 실행할 수 있기때문에 XSS 공격이 가능하다. Payl..

드림핵 Relative Path Overwrite WriteUp

문제 설명Relative Path Overwrite에서 실습하는 문제이다.문제 풀이vuln.phpsrc로 filter.js를 상대경로로 불러오고 있다. 해당 js파일은 XSS 공격을 필터링하기 위한 코드가 포함되어 있는 파일이다. 하지만 filter.js를 상대경로로 불러오고 있기 때문에 Relative-path-Overwrite(RPO) 취약점이 발생할 수 있다. 그림 1은 vuln페이지에 접속하였을 때 나타나는 화면이다. filter.js로 필터링할 문자열들을 불러오고 있다. index.php를 /?page 사이에 입력하여도 정상적으로 화면이 출력된다. 하지만 filter.js는 상대 경로로 되어있으니 /index.php/filter.js를 참조하기 때문에 XSS 필터링을 우회할 수 있다. 공격 코드..

드림핵 blind-command WriteUp

문제 설명flag 파일을 읽으면 된다.소스코드#!/usr/bin/env python3from flask import Flask, requestimport osapp = 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 cmdapp.run(host='0.0.0.0', port=8000)소스코드는 생각보다 짧다. cmd 파라미터를 받고 GET방식 말고 다른 방식으로 ..

드림핵 Carve Party WriteUp

문제 설명호박은 10000번 클릭하면 플래그를 획득할 수 있다.문제 파일을 다운받은 후 웹 사이트에 접속을 진행한다. 이 호박을 10000번 누르면 flag를 획득할 수 있다. 호박을 눌렀을 때 코드가 어떻게 처리되는지 확인해볼 필요가 있다. 소스코드(Click한 경우)$(function() { $('#jack-target').click(function () { counter += 1; if (counter 클릭하였을 때 counter가 1씩 증가하며 pumpkin배열의 값을 불러와 pie와 xor 처리를 한다. 그 후 10000번을 클릭하였을 때 make함수를 수행하여 canvas를 통해 flag를 그려준다. python을 통해 코드를 작성하여 flag를 확인하였다.파이썬 flag 추출 소..

드림핵 XSS Filtering Bypass WriteUp

문제 설명 XSS Filtering Bypass에 대한 문제이다. 이를 통해 크로스 사이트 스크립팅 취약점을 이용하여 문제를 해결해야함을 알 수 있다. 메인페이지에 접속을 하면 vuln, memo, flag에 대한 페이지에 접근할 수 있다. 먼제 vuln에 대해 살펴보겠다. vuln 페이지 소스코드 @app.route("/vuln") def vuln(): param = request.args.get("param", "") param = xss_filter(param) return param vuln 페이지는 param이라는 인자를 받아 xss_filter함수를 통해 필터링을 진행한 후 그대로 출력해준다. xss_filter을 살펴보자!! xss_filter 함수 소스코드 def xss_filter(tex..

드림핵 web-ssrf Write Up

문제 설명 해당 웹 사이트는 flask 백엔드 프레임워크로 제작되었으며 SSRF 취약점을 이용하여 flag파일을 읽어내는 문제이다. 해당 웹사이트는 url 정보를 입력하면 해당 url의 이미지를 보여주는 사이트이다. 만약 내부망에서 일반 사용자들이 접근하지 못하는 기능들이 수행되고 있다면 SSRF 취약점이 도출될 수 있다. SSRF 취약점을 통해 url 파라미터 값을 통하여 내부망의 파일들을 접근할 수 있다. local_host = "127.0.0.1" local_port = random.randint(1500, 1800) local_server = http.server.HTTPServer( (local_host, local_port), http.server.SimpleHTTPRequestHandler ..

드림핵 file-download-1 Write Up

문제 설명 해당 서비스는 파일 다운로드 취약점이 존재하는 웹 서비스이며 flag.py 파일을 다운받으면 플래그를 획득할 수 있다. a.txt라는 이름으로 파일을 생성하고 클릭하면 파일의 내용을 읽을 수 있다. 우리는 flag.py 파일의 내용을 읽어야 하기 때문에 name 파라미터에 flag.py를 입력하면 문제가 해결될것이다. flag.py 파일이 존재하지 않는다고 한다. 이는 해당 디렉토리에 없다는 것이며 디렉터리 트래버셜을 이용하여 상위디렉토리에서 flag.py를 찾도록 하겠다. 디렉터리 트래버셜 기법을 이용하여 flag.py의 내용을 읽었다.

반응형