2025년 회고록

들어가며 블로그를 공부용으로만 쓰기엔 왠지 모를 아까움이 들었다. 그래서 뭘 할까 고민하다가.. 한 해를 갈무리 할 겸 회고록을 써보기로 했다. 아 물론 2026년의 첫 해가 뜬 지 9일이나 지났지만 말이다. 그래도 더 늦기 전에 2025년을 회고해보고자 한다. 2025년은 토끼띠에게 들삼재였다는데, 그랬던 것 같기도 하고.. 아니었던 것 같기도 하다. 뭐 아무렴 어떠랴. 근성으로 이겨내면 그만이다. 1월 나의 2025년 첫 1초는 DDP역 앞 세븐일레븐이었다. 알바와 함께하는 새해는 처음이라 감회가 새롭더라. 주 손님층이었던 외국인들이 종각으로 몰렸는지 그날따라 사람이 적었었다. 덕분에 알바의 마지막 날을 마무리했었지. 아 그리고 학점을 다 들어서 수료 상태가 되었다. 이에 따라 자취방도 빼고 본가로..

카테고리 없음 2026.01.10 1

XS_leak

BackgroundXS leak에 대해 이해하려면 먼저 CORS와 SOP에 대해 알아야 한다.동일 출처 정책 (Same Origin Policy)SOP는 동일한 출처에서만 리소스를 공유하도록 유도한다. 동일한 출처란 "프로토콜|호스트|포트"가 모두 같은 곳을 말한다. 즉,http://123.123.123.12:8000 = http://123.123.123.12:8000 https://1.1.1.1:8000 != http://1.1.1.1:8000http://search.naver.com != http://mail.naver.com이렇게 하나만 달라도 다른 출처로 간주하는 것. 참고로 TLD나 subdomain이 달라도 다른 출처로 간주된다. SOP는 다른 서버, API로 요청을 보내고 응답 받을 수는 있..

Study 2025.12.02 0

JWT (Json web token)

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- JWT란?json 형식으로 이루어진 웹 토큰이라고 쉽게 생각하면 된다. jwt는 header, payload, signature세 부분으로 나뉜다. 보통 signature 부분은 해당 jwt 알고리즘에 따른 key를 이용해 생성되기 때문에 변조 불가능하고,header, payload 부분을 변조한다. 보통 header 부분에는 alg : 해당 jwt 생성 시 사용한 알고리즘typ : 토큰 타입, 보통 JWT 로 지정cty : 페이로드의 타입kid : 키의 idjwk : 서명에 사용된 공개키를 직접 포함jku : 공개키가 위치한 urlx5u, x5c : 공개키 인증서 위치한 url, 혹은 직접 포함 이렇게 ..

Study 2025.08.20 0

Web cache deception

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- Web cache deception이란웹은 정적 콘텐츠, 동적 콘텐츠로 구성된다. 정적 콘텐츠(Static Contents)의 경우 PNG, JPG 등 정보가 고정된 콘텐츠를 의미한다. 트래픽이 많아질 경우에 서버의 부담을 덜어주기 위해 Caching을 이용하기도 하는데, 이 때 발생할 수 있는 취약점이다. 먼저 알아야 할 것은사용자 - 캐시 서버 - 백엔드 서버 간의 관계이다. 이런 식으로 있다고 생각하면 되는데, 캐시 서버에서 Caching을 하면 유저의 로컬 브라우저에 저장되게 된다. 즉, 백엔드 서버까지 굳이 가서 다시 콘텐츠를 불러올 필요가 없어진다는 것이고, 그러면 서버의 부담이 줄게 되는 ..

Study 2025.07.19 0

pugjs 취약점

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- 워게임 풀다가 관련 개념이 나와서 간단히 정리해 보려 한다. pug는 html을 더 효과적으로 보여주는 렌더링 엔진이다. pretty option을 통해 입력 값을 들여쓰기 해서 보여줄 수 있는데, 여기서 RCE가 발생할 수 있다고 한다. visitMixin: function(mixin) { var name = 'pug_mixins['; var args = mixin.args || ''; var block = mixin.block; var attrs = mixin.attrs; var attrsBlocks = this.attributeBlocks(mixin.attributeBlo..

Study 2025.06.26 0

Unicode case mapping collision

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- 어제 드림핵에서 워게임 문제 풀다가 관련 개념이 나와서 정리해보려고 한다.생각치도 못했는데, 알고 나니까 신기하더라.. Unicode case mapping collision이란?유니코드가 lowercasing, uppercasing 할 때 서로 충돌하여 동일하게 처리되는 현상..이라고 하는데,쉽게 이해하기 위해 예시를 들어보면print('ß'.lower() == 'SS') // Falseprint('ß'.upper() == 'SS') // Trueprint(ord('S')) // 83 python으로 독일어 'ß' 를 대문자화하면 'SS' 와 같다고 인식하는 것을 볼 수 있다. 그리고 저기 있는 'S'는..

Study 2025.06.26 0

Prototype Pollution

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- Prototype Pollution이란?Javascript는 객체 지향 언어이다. python, java는 class 라는 개념으로 상속을 구현하지만, javascript는 prototype을 이용하여 상속을 구현한다. (물론 class도 사용하지만, 본질은 prototype이긴 함)모든 객체는 최상위 객체를 원형(prototype)으로 삼고 이를 참조하는 방식으로 상속과 비슷하게 구현되는 것. 쉽게 말해 어떤 객체의 프로퍼티를 찾을 때, 자바스크립트는1. 해당 객체 확인2. __proto__로 연결된 부모 객체 확인3. 계속 거슬러 올라가다가 마지막에 전역 객체인 Object.prototype까지 확인4..

Study 2025.06.25 0

CSP

- 이 글은 아직 현업을 경험하지 못한 보안 공부생의 정리 글이니, 정확하지 않을 수도 있습니다.- CTF 풀 때 CSP를 포함한 문제가 나왔었다. 중간에 계속 헷갈렸었으니 다시 한번 정리해보는 시간을 가져보도록 해보자. CSP란?Contents Security Policy. 콘텐츠 보안 정책이라고 한다.주요 목표는 XSS 공격을 완화하고 보고하는 것이다. 브라우저는 콘텐츠의 출처를 신뢰하기 때문에 공격자가 주입한 악성 스크립트를 실행한다. 때문에 XSS 공격이 발생하는 것이고.하지만 CSP를 통해서 신뢰할 수 있는 출처나 소스를 지정하면 XSS 공격을 완화할 수 있게 되는 것. 사용 방법은 두 가지가 있는데, HTTP 헤더Content-Security-Policy: default-src 'self'; ..

Study 2025.06.24 1