분류 전체보기 71

[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 11:24:34

[JS] 자바스크립트 기본 개념 / DOM

window, document 객체 웹 개발 과정에서 일상적으로 다뤄오던 window, document 객체는 웹 브라우저에서 JS로 웹 페이지를 제어할 수 있게 하는 객체이다.  window브라우저 창 전체를 대표하는 전역 객체로, 브라우저 환경에서 자바스크립트를 실행할 때, 최상위 컨텍스트로 사용된다. 웹 브라우저의 전체 창을 나타내며, 전역 범위에서 접근 가능하고 브라우저 기능을 제어 가능하다.window.alert('Hello!'); window.setTimeout(() => console.log('2초 후'), 2000); console.log(window.innerWidth); 일상적으로 사용하던 alert()와 같은 메서드나 객체는 wnidow객체를 생략하고 사용하는 것이다. documen..

Dev 2025.04.08

[Oracle Cloud] 오라클 클라우드 / 로그인부터 웹 서버 띄우기까지

현재 Cloud 서비스는 GCP, AWS 등등 다양하지만 다들 일정 기간 동안만 무료로 하거나 일정한 크레딧을 지급하는 경우가 대다수이다. 하지만 Oracle에선 평생 무료인 Cloud 서비스를 제공하고 있고, 이는 Oracle Cloud에서 생성 가능하다. 클라우드 서비스 무료 이용Oracle Cloud Free Tier는 기업에게 무제한으로 사용할 수 있는 상시 무료 클라우드 서비스를 제공합니다.www.oracle.com  위 Oracle Cloud에서 로그인과 결제 수단까지 등록을 마쳐야 한다. 이때의 Region은 포스팅 날짜 기준 대한민국 춘천으로 설정하면 된다. 참고로 이때 설정한 Region은 추후에 수정이 불가하다.    위 로그인 절차를 마무리하면 Cloud 서비스를 사용할 수 있으며, ..

Dev 2025.04.01

[JS] 자바스크립트 기본 개념 / 변수 선언 방식

자바스크립트 | 변수 선언 방법 자바스크립트는 변수를 선언할 때 따로 타입 정의가 필요하지 않은 언어이다. (이로 인해 발생하는 여러 문제 때문에 TypeScript가 등장하는 계기가 되었다.)  따라서 JS의 변수를 선언할 땐 별도의 타입 지정 없이 var, let, const 키워드로 지정하게 되며 각각은 아래와 같은 특징을 갖는다.  var -  변수 재 선언, 재 할당 모두 가능let - 변수 재 선언 불가, 재 할당 가능const - 변수 재 선언, 재 할당 모두 불가var의 단점을 보완하기 위해 let과 const 개념이 등장한 것인데,var의 경우 변수에 대한 재 선언 및 재 할당이 모두 가능하기에 여러 문제가 동반되었다.  var A = "a"; var B = 5; if (..

Dev 2025.03.26

[JS] 자바스크립트 기본 개념 / 동기, 비동기

자바스크립트란 자바스크립트 언어(이하 JS)는 객체 기반의 스크립트 언어로, 동적이며, 타입을 정의할 필요 없는 인터프리터 언어이다. 또한 객체 지향형 프로그래밍과 함수형 프로그래밍을 모두 표현할 수 있는 언어이다. JS는 클라이언트 사이드 언어로 개발되었으며 JAVA와는 관계없는 별도의 언어이다. 클라이언트 사이드 언어 특성상 주로 브라우저에서 실행되며, 브라우저의 자바스크립트 가상 머신이란 엔진이 JS를 동작시키게 된다. 엔진의 종류는 다양하며, 그 예시는 아래와 같다.V8 - Chrome, OperaSpiderMonkey - FirefoxChakraCore - Microsoft EdgeSquirrelFish - SafariTrident, Chakra - IE그러나 자바스크립트가 위 엔진만을 바탕으로..

Dev 2025.03.25

[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