CTF 11

[CodeGate 2025] Masquerade

문제에 접근해 회원가입, 로그인을 마친 모습이다. MEMBER 권한으로 접근한 것을 확인 가능하며, 권한을 변경 가능한 로직이 존재한다. 이때의 코드를 확인해 보면 아래와 같다. // /app/models/userModel.js...const role_list = ["ADMIN", "MEMBER", "INSPECTOR", "DEV", "BANNED"];function checkRole(role) { const regex = /^(ADMIN|INSPECTOR)$/i; return regex.test(role);}...const setRole = (uuid, input) => { const user = getUser(uuid); if (checkRole(input)) return fa..

CTF 2025.04.15

[CodeGate 2023] AI

.jar 파일이라 java 디컴파일러로 확인해야 하는 문제이다.사이트 자체의 기능은 로그인, 회원가입 밖에 존재하지 않으며 기본적으로 세션이 부여되고 있었다. // package BOOT-INF.classes.com.hoshino.ai.controller// ApiController.classpackage BOOT-INF.classes.com.hoshino.ai.controller;import com.hoshino.ai.controller.request.LoginRequest;import com.hoshino.ai.controller.request.UserSearchRequest;import com.hoshino.ai.domain.User;import com.hoshino.ai.repository.Use..

CTF 2025.03.21

[CodeGate 2023] CODEGATE Music Player

2년 전의 문제를 빌드하여 분석하다 보니 여러 문제가 존재해 문제 페이지에 접근했을 때 문제를 식별 불가하기에 바로 코드분석을 수행하였다. // /server/app/main.js/*1. Packages are the latest. (as of June 2023)2. This is a ChatGPT-oriented code. (Ref. https://twitter.com/brokenpacifist/status/1650955597414809600)3. https://fe.gy/ stores copyright-free music data. Attacking the infrastructure (includes DDoS, dirbusting, etc.) is strictly prohibited.*//..

CTF 2025.03.21

[CodeGate 2023] Calculator

문제에 접근한 모습은 위와 같으며 Register, Login 과정 후엔 calc 페이지와 report 페이지에 접근 가능하다.  calc 페이지에선 사용자의 입력을 받아 그대로 내부에서 연산 후, 출력을 보여주고 있으며 해당 부분에서의 코드는 아래와 같다.    사용자의 입력을 계산하기 위해 eval() 함수를 사용하고 있는데, 접근한 계정이 어드민 계정이 아닐 경우 RCE를 예방하기 위해 문제에선 필터링으로 사용자의 입력을 검증하고 있는 것을 확인 가능하다.   // /bot/bot.jspage.setCookie({ "name": "FLAG", "value": flag, "domain": "web", "path": "/", "httpOnly": false, "sameS..

CTF 2025.03.20

[ISITDTU CTF] Another one Write-Up

문제 확인, 목표설정  문제에 접근하면 먼저 token이 없단 문자와 함께 더 진행이 되지 않는다.문제코드 app.py를 확인해 보면 /login, /register, /render 페이지가 존재하고 있음을 알 수 있다. /register로 접근해 등록하고 /login에서 로그인을 마치     이때의 쿠키를 확인하면 jwt 형태로 쿠키가 생성되며 role이 user임을 확인 가능하다.@app.route('/render', methods=['POST'])def dynamic_template(): token = request.cookies.get('jwt_token') if token: try: decoded = jwt.decode(token, app.config[..

CTF 2025.02.27

[hkcert] Custom-Web-Server(1) Write Up

문제 분석   맨 처음 문제에 접근하면 404 error 페이지가 표시되는 것을 확인 가능하고,이에 Go Back 버튼을 클릭하면 index 페이지로 접근할 수 있다.  문제 페이지를 샅샅이 찾아봐도 사용자의 입력을 받아 서버와 상호작용 하는 곳은 url 창 외에 존재하지 않는다. 이쯤에서 파일을 다운로드하여 문제 파일을 확인해 보면 여타 웹 문제와 달리 server 파일로 c 파일을 사용하는 것을 알 수 있다. // server.c#include #include #include #include #include #include #include #include #include #define PORT 8000#define BUFFER_SIZE 1024typedef struct { char *conten..

CTF 2025.02.27

[hkcert] Mystiz's Mini CTF (2) Write Up

mass assignment 취약점 본 문제는 mass assignment 취약점이 존재하는 문제인데, 이 취약점은 공격자가 서버에서 할당한클라이언트의 변수를 충분히 검증하지 못해 내부의 속성으로 변환하는 취약점으로,  // models.user.py def marshal(self): return { 'id': self.id, 'username': self.username, 'is_admin': self.is_admin, 'score': self.score } 문제를 보면 is_admin 이란 변수로 사용자가 admin 권한을 갖고 있는지 검증하고 있다.  이때 버프스위트를 사용해 회원가입 시에 ..

CTF 2025.02.27

[IrisCTF] Political

문제 페이지 문제에 접근하면 토큰을 주고 있음을 알 수 있다.문제만으론 더 분석할 수 없어 코드를 바로 확인해 보았다. # chal.pyfrom flask import Flask, request, send_fileimport secretsapp = Flask(__name__)FLAG = "irisctf{testflag}"ADMIN = "redacted"valid_tokens = {}@app.route("/")def index(): return send_file("index.html")@app.route("/giveflag")def hello_world(): if "token" not in request.args or "admin" not in request.cookies: retu..

CTF 2025.02.27