Security & Hacking
// OFFENSIVE — 기술적 깊이 × 실용성
OAST로 SSRF를 빠르게 검증하는 방법
SSRF 의심 지점이 보이면 바로 DNS/HTTP 아웃바운드가 나는지 확인하는 게 핵심입니다. OAST(Out‑of‑Band Application Security Testing)는 요청을 외부로 튀게 만든 뒤, 그 흔적을 관찰하는 방식이라 WAF나 필터에 막혀도 증거를 남깁니다.
LD_PRELOAD 런타임 후킹 한 번에 정리
리버스 엔지니어링 초반에 바이너리를 고치기 어렵다면 LD_PRELOAD가 제일 빠른 우회 루트입니다. 동적 링커가 심볼을 해석할 때 우선 로드되는 공유 라이브러리로 함수를 덮어씌우는 방식이죠.
브라우저 익스텐션 리버싱 빠른 루틴
브라우저 확장 프로그램은 크롬/엣지 기준으로 CRX → ZIP만 풀면 거의 끝입니다. 소스가 난독화되어도 구조를 먼저 잡으면 분석 속도가 확 올라가요.
SROP 빠른 감 잡기: sigreturn로 레지스터 풀세팅
SROP(Sigreturn Oriented Programming)는 sysrtsigreturn을 호출해 커널이 스택에 있는 sigcontext를 그대로 복원하게 만드는 기법입니다. ROP 체인 길이를 줄이거나, 가젯이 부족할 때 레지스터를 한 번에 세팅할 수 있어요. 핵심은 가짜 시그널 프레임을 스택에 올리고 syscall; ret로 rt_sigreturn을 트리거하는 것.
ret2csu 미니 치트시트
PIE/NX 환경에서 ROP 가젯이 부족할 때 libccsuinit의 두 가젯을 써서 함수 호출을 만들 수 있습니다. 핵심은 rdi/rsi/rdx 세팅과 함수 포인터 호출을 한 번에 끝내는 것.
Shadow DOM XSS 헌팅 포인트
최근 프런트엔드는 Web Components를 써서 Shadow DOM 안에 UI를 숨깁니다. 그런데 sanitizer가 light DOM만 검사하는 경우가 있어요. 이때 attachShadow({mode:"open"})로 노출된 root를 통해 unsafe HTML을 주입하면 XSS로 이어질 수 있습니다.
AES-CBC 비트플립 공격 빠른 감
CBC 모드는 이전 블록의 ciphertext가 다음 블록의 plaintext에 XOR로 섞입니다. 그래서 공격자는 C_의 특정 비트를 뒤집어 P_i를 원하는 형태로 바꿀 수 있어요. 서버가 복호화 결과를 그대로 신뢰하고 role=user 같은 문자열을 파싱하면, role=admin으로 승격시키는 식의 변조가 가능합니다.
CTF에서 checksec로 바이너리 방어기법 빠르게 파악하기
리버스/포너블 문제 풀 때 첫 30초에 할 일은 checksec로 방어 옵션을 확인하는 겁니다. NX, PIE, Canary가 켜져 있느냐에 따라 익스플로잇 전략이 완전히 달라져요.
DNS Rebinding 기초 메모
DNS Rebinding은 동일 출처 정책(SOP)을 우회해 브라우저로 내부망 자원에 접근하게 만드는 공격입니다. CTF 웹 문제에서 “내부 서비스에서 flag 읽기”로 자주 등장합니다.
ECB 컷앤페이스트 공격 메모
AES-ECB는 블록 단위로 독립 암호화되기 때문에, 동일 평문 블록은 동일 암호문 블록으로 매핑됩니다. 이 특성을 이용해 CTF에서 권한 상승 토큰을 만들 수 있습니다.
Host 헤더 공격 빠른 체크
웹앱은 종종 Host 값을 기반으로 리다이렉트 URL 생성, 절대경로 링크, 메일/비밀번호 재설정 링크를 만듭니다. 이때 프록시/캐시/앱의 신뢰 경계가 어긋나면 Open Redirect, 링크 하이재킹, 캐시 독으로 이어질 수 있어요.
소스맵으로 웹 리버싱 빠르게 끝내기
프로덕션 번들 JS는 난독화돼도 .map이 남아있으면 원본 구조가 노출됩니다. 공격 관점에서는 숨은 API, 피처 플래그, 디버그 라우트*를 찾는 지름길이죠.
OAuth redirect_uri 함정 메모
OAuth/OIDC에서 redirect_uri 검증이 느슨하면 토큰 탈취나 계정 연결 하이재킹으로 이어집니다. CTF에서 자주 나오는 패턴만 짧게 정리.
RSA 공통 모듈러스 취약점, CTF에서 바로 써먹기
RSA에서 같은 N(modulus)을 재사용하면서 서로 다른 e로 암호화하면, 조건만 맞으면 평문을 복구할 수 있습니다. CTF에서 종종 “두 개의 공개키가 N이 같네?” 형태로 등장해요.
strace/ltrace로 리버싱 10분 컷 단서 찾기
정적 분석 전에 strace와 ltrace를 돌리면 입출력 흐름과 라이브러리 호출이 한눈에 보입니다. CTF crackme에서 키 검증 루틴을 빠르게 좁히는 데 최고예요.
유니코드 정규화로 Path Traversal 우회
웹 서버나 API가 ../만 필터링할 때, 유니코드 정규화(NFC/NFKC) 차이를 이용하면 우회가 됩니다. 예: ..%ef%bc%8f(FULLWIDTH SOLIDUS)나 ..%e2%88%95(DIVISION SLASH) 같은 문자가 정규화 후 /로 변환되면 필터를 통과하고 실제 파일 경로가 깨집니다.
YARA 룰로 리버싱 시그니처 잡기
YARA는 바이너리/메모리 덤프에서 패턴을 선언적으로 매칭하는 도구입니다. 리버스 단계에서 “이 함수가 어느 버전인지”, “이 샘플이 어떤 계열인지” 빠르게 태깅할 때 유용해요.
Zip Slip 취약점 빠르게 정리
Zip Slip은 압축 해제 과정에서 ../ 경로가 제대로 제거되지 않아 임의 파일 쓰기가 되는 취약점입니다. 웹 업로드 기능에서 ZIP을 풀어주는 경우, ../../../../var/www/html/shell.jsp 같은 엔트리를 심어 서버 파일을 덮어쓸 수 있어요.
angr로 심볼릭 실행 맛보기
리버스 엔지니어링에서 심볼릭 실행은 “입력 조건을 변수로 두고 경로를 추적”해 정답을 찾는 기술입니다. CTF crackme나 난독화된 분기에서 특히 강력합니다.
ptrace 안티디버깅 우회 메모
리버스 대상이 ptrace(PTRACE_TRACEME)로 디버거를 탐지하면 바로 종료하는 경우가 많습니다. 핵심은 호출 지점과 반환값을 제어하는 것.
CTF에서 로그 누출로 플래그 뽑는 법
웹/리버싱 CTF에서 의외로 강한 벡터가 log leak입니다. 핵심은 “어디에 어떤 로그가 쌓이는지” 빠르게 잡는 것.
GraphQL 인트로스펙션 악용 포인트
GraphQL은 스키마가 API 설명서 자체입니다. 인트로스펙션이 열려 있으면 공격자는 쿼리 표면을 그대로 확보합니다. CTF에서도 흔한 초반 단서죠.
패치 디핑으로 N-day 취약점 찾기
패치가 공개된 직후, diff는 최고의 힌트입니다. 업데이트 전/후 바이너리 또는 소스의 변경 지점을 비교해 취약점 후보를 좁히는 것이 핵심입니다. CTF에서도 “패치된 함수가 곧 플래그로 가는 길”인 경우가 많습니다.
ELF PLT/GOT 하이재킹 핵심 흐름
리버싱이나 CTF에서 GOT overwrite는 아직도 강력한 우회 포인트입니다. 동적 링킹 흐름만 명확히 잡으면, 호출 경로를 깔끔하게 갈아탈 수 있어요.
ret2dlresolve: 심볼 해석기를 역이용하는 ROP 트릭
ret2dlresolve는 동적 링커(ld.so)의 심볼 해석 과정을 악용해, 바이너리에 없는 함수도 ROP로 호출하는 기법입니다. 특히 PLT/GOT가 제한된 CTF 바이너리에서 강력합니다.
심볼 없는 바이너리에서 함수 윤곽 잡기
스트립된 바이너리는 함수명/디버그 정보가 사라져 흐름 추론이 핵심입니다. Ghidra/IDA에서 자동 분석이 흔들릴 때, 아래 루틴으로 윤곽을 잡으면 속도가 붙습니다.
WAF 우회 플레이북: 시그니처를 흔드는 작은 변형
WAF는 보통 정규식/시그니처 기반으로 요청을 차단합니다. 따라서 우회는 “기능은 유지하되 형태를 바꾸는” 전략이 핵심입니다. 아래는 CTF와 실전 테스트에서 자주 쓰는 변형 패턴입니다.
WASM 리버싱으로 웹 보안 포인트 찾기
최근 프론트엔드에서 민감 로직을 WebAssembly로 숨기는 경우가 많습니다. WASM은 브라우저에서 실행되지만 결국 바이너리라서 리버싱 포인트가 생깁니다.
HTTP Request Smuggling 감 잡기
요청 스머글링은 프록시/로드밸런서와 백엔드가 요청 경계를 다르게 해석할 때 발생합니다. 흔한 조합은 Content-Length와 Transfer-Encoding: chunked 해석 불일치입니다.
Z3로 CTF 암호 퍼즐 푸는 루틴
암호학 CTF에서 “식은 있는데 답이 안 나오는” 순간이 자주 옵니다. 이때 SMT Solver인 Z3가 해답입니다. 핵심은 문제를 제약 조건으로 바꾸는 것.
Binary Diffing: 패치에서 취약점 찾는 빠른 루틴
패치가 올라왔을 때 가장 빠른 취약점 분석 루틴은 binary diffing이다. “무슨 함수가 바뀌었는지”만 알아도 공격 포인트가 보인다.
CTF 크랙미 리버스 패턴 5분 요약
크랙미는 정적 분석만으로도 풀리는 패턴이 반복된다. Ghidra/IDA에서 아래 체크리스트만 돌려도 속도가 오른다.
CSP 우회 노트: nonce, strict-dynamic, 그리고 실수들
CSP는 XSS를 줄이지만, 설정 실수는 바로 우회 포인트가 된다. CTF에서도 자주 보이는 핵심 패턴만 정리한다.
Hash Length Extension: MD5/SHA1 서명 우회 핵심
웹에서 hash(secret || msg) 형태의 서명을 쓰면 length extension에 취약합니다. 공격자는 원본 해시와 msg 길이를 추정해 추가 데이터를 붙인 새 해시를 만들 수 있어요.
Ghidra + Frida로 하이브리드 리버싱 루틴 만들기
정적 분석은 구조를, 동적 분석은 현실 동작을 보여준다. CTF나 실전 분석에서 두 툴을 묶어 쓰면 속도가 확 늘어난다.
Padding Oracle: 암호문이 알려주는 비밀
CBC 모드에서 서버가 패딩 오류 메시지를 다르게 응답하면, 암호문만으로 평문을 복구할 수 있다. 이게 padding oracle이다. 실전과 CTF 모두 자주 나온다.
웹 캐시 포이즈닝: CDN을 공격 표면으로 만들기
웹 캐시는 성능을 올리지만, 잘못 설정되면 캐시 포이즈닝의 표적이 된다. 핵심은 “같은 URL로 서로 다른 응답을 만들고, 그 응답을 캐시에 박아버리는 것”이다.
Android APK 리버스 엔지니어링
APK 하나만 있으면 앱의 비밀을 다 꺼낼 수 있다. CTF mobile 카테고리 단골 주제.
Linux 커널 익스플로잇 입문: LPE의 세계
커널 익스플로잇은 해킹의 정점이라 불린다. 일반 유저 권한에서 root를 탈취하는 LPE(Local Privilege Escalation) — CTF의 pwn 카테고리에서도 종종 등장하고, 실제 APT 공격에서도 핵심 단계다.
Use-After-Free: 해방된 메모리를 다시 잡아라
UAF(Use-After-Free) 는 heap 메모리를 free() 한 이후에도 해당 포인터를 계속 사용할 때 발생하는 취약점이다. 현대 브라우저, 커널, 서버 소프트웨어에서 끊임없이 발견되며 CTF에서도 단골 주제다.
API 보안 테스팅: 실전 가이드
현대 애플리케이션은 서비스 간 통신에 API를 크게 의존하기 때문에, API 보안 테스팅은 보안 연구자와 침투 테스터에게 핵심 스킬이 되었다. 이 가이드는 REST 및 GraphQL API에서 취약점을 찾는 핵심 기법과 도구를 다룬다.
버퍼 오버플로우 기초: 바이너리 익스플로잇의 첫걸음
버퍼 오버플로우는 소프트웨어 보안에서 가장 기본적인 취약점 중 하나로, 리버스 엔지니어링, CTF, 침투 테스트에 관심 있는 누구에게나 필수 지식이다. 수십 년 전부터 알려진 취약점이지만 실제 애플리케이션에서 여전히 발견되기 때문에 반드시 익혀야 할 스킬이다.
CORS 설정 오류와 실전 익스플로잇
CORS(Cross-Origin Resource Sharing)는 브라우저가 다른 오리진의 리소스 접근을 제어하는 메커니즘이다. 잘못 설정하면 인증된 사용자 데이터를 공격자가 탈취할 수 있다.
암호학 공격 기법 입문: Padding Oracle부터 Bit-Flipping까지
CTF를 풀다 보면 암호화된 쿠키나 토큰을 마주칠 때가 많다. 그냥 "암호화됐으니 안전하겠지"라고 넘기면 탈락. 실제로는 구현 실수 하나로 전체가 무너지는 경우가 허다하다.
CTF 정찰: OSINT 기법 완전 정복
OSINT(오픈소스 인텔리전스)는 CTF 대회, 침투 테스트, 보안 연구에서 핵심 스킬이다. 이 가이드는 문제를 풀기 전후에 정보를 수집하는 데 도움이 되는 실전 OSINT 기법을 다룬다.
Deserialization 취약점 — 객체 역직렬화로 RCE 터뜨리기
역직렬화란?
Format String Vulnerabilities: CTF에서 자주 나오는 그 버그
포맷 스트링 취약점은 오래된 버그지만 CTF에서 여전히 단골 문제다. 원리만 알면 메모리 읽기부터 임의 쓰기까지 가능하다.
Frida로 시작하는 동적 분석 (Dynamic Analysis with Frida)
동적 분석은 프로그램이 실행 중일 때 그 동작을 관찰하고 수정하는 기법입니다. Frida는 이러한 동적 분석을 위한 강력한 도구로, CTF, 모바일 앱 분석, 취약점 연구 등 다양한 분야에서 활용됩니다.
Ghidra로 리버스 엔지니어링하기: 실전 가이드
Ghidra는 NSA가 공개한 오픈소스 리버스 엔지니어링 프레임워크로, 보안 연구자, CTF 참가자, 악성코드 분석가 모두에게 필수 도구가 되었다. 이 가이드는 Ghidra로 바이너리를 분석하는 실전 기법을 다룬다.
Heap Exploitation: tcache 공격 기법 입문
TL;DR: glibc의 tcache를 이해하면 heap exploit의 절반은 풀린다. 구조와 공격 패턴을 정리했다.
JWT 보안 취약점: 흔한 실수와 익스플로잇 기법
JWT(JSON Web Token)는 현대 웹 애플리케이션 어디에나 있다. 편리하고 무상태적이며 구현하기 쉽다 — 바로 그래서 잘못 구현되는 경우가 많다. CTF와 실제 애플리케이션에서 자주 만나는 JWT 취약점을 알아보자.
Prototype Pollution: JS의 숨겨진 취약점
JavaScript의 prototype 체인을 오염시켜 앱 전체 동작을 바꾸는 공격 기법이다. 이름은 생소해도, 실전 CTF와 Bug Bounty에서 꽤 자주 등장한다.
Pwntools로 CTF 바이너리 익스플로잇하기
바이너리 익스플로잇은 CTF에서 가장 도전적이면서도 보람 있는 카테고리 중 하나다. 근본적인 취약점을 이해하는 것도 중요하지만, 올바른 도구를 갖추는 것이 문제 해결과 막힘의 차이를 만들 수 있다. 바로 pwntools — CTF 바이너리 익스플로잇의 사실상 표준이 된 Python 라이브러리다.
Radare2로 CTF 바이너리 풀기
Radare2(r2)는 CTF 바이너리 익스플로잇 문제를 다루는 플레이어들에게 필수가 된 강력한 오픈소스 리버스 엔지니어링 프레임워크다. Ghidra나 IDA Pro가 세련된 GUI를 제공하는 반면, radare2의 커맨드라인 인터페이스와 스크립팅 능력은 빠른 분석에 믿을 수 없을 만큼 유연하다.
ROP Chain: 스택 카나리아를 우회하는 방법
현대 바이너리는 NX(Non-Executable Stack)와 Stack Canary로 무장하고 있다.
Shellcode 작성 기초 — 어셈블리부터 바이트로
Shellcode는 취약점을 익스플로잇할 때 실행시키고자 하는 raw 머신코드 바이트 시퀀스다. Buffer overflow나 ROP chain의 페이로드로 삽입되며, CTF의 단골 소재이기도 하다.
사이드 채널 공격: 소리 없는 해킹
암호 알고리즘이 수학적으로 완벽해도 구현체는 뚫린다. Side-Channel Attack이 바로 그 빈틈을 노린다.
SSTI: 서버사이드 템플릿 인젝션 완전 분석
SSTI(Server-Side Template Injection)는 템플릿 엔진이 사용자 입력을 코드로 해석할 때 발생하는 취약점이다. XSS처럼 보이지만 실제론 서버에서 실행되어 RCE까지 이어질 수 있다.
웹 애플리케이션 퍼징: 숨겨진 버그 찾기
퍼징은 예상치 못한 입력을 애플리케이션에 던져 취약점, 숨겨진 엔드포인트, 엣지 케이스를 발견하는 기술이다. 이 가이드는 웹 보안 테스팅과 CTF 대회를 위한 실전 퍼징 기법을 다룬다.
웹 보안 테스팅 필수 도구
웹 해킹의 기본은 좋은 도구를 아는 것입니다. CTF든 실전 버그바운티든, 이 도구들은 필수입니다.
WebSocket 보안: 실시간 통신의 숨겨진 취약점
WebSocket은 HTTP와 달리 지속적인 양방향 통신을 제공한다. 채팅, 게임, 실시간 대시보드 등 현대 웹앱에서 광범위하게 쓰이지만, 보안 설계가 허술한 경우가 많다.
XSS 헌팅: 기초부터 버그 바운티까지
크로스 사이트 스크립팅(XSS)은 오늘날 웹 애플리케이션에서 가장 흔한 취약점 중 하나로 남아 있다. 수십 년 전부터 알려진 취약점임에도 개발자들이 같은 실수를 계속 반복하기 때문에, XSS 헌팅은 버그 바운티 헌터와 CTF 플레이어 모두에게 수익성 높은 스킬이다.
XXE Injection: XML이 공격 벡터가 되는 순간
XML External Entity (XXE) Injection은 XML 파서의 외부 엔티티 처리 기능을 악용하는 공격이다. OWASP Top 10에 꾸준히 이름을 올리는 클래식이지만, 아직도 수많은 서비스에서 발견된다.
리버스 엔지니어링 101
바이너리를 읽는 법.
SQL Injection 마스터하기 - 웹 해킹의 필수 기술
TL;DR: SQL Injection은 여전히 살아있는 가장 위험한 웹 취약점. 기본부터 Blind SQLi, Time-based 공격, sqlmap 활용까지 실전 완벽 정리.
SSRF 완벽 가이드 - 서버를 역이용하는 공격 기법
TL;DR: SSRF(Server-Side Request Forgery)는 서버가 공격자가 지정한 임의의 URL로 요청을 보내도록 만드는 취약점입니다. 내부 네트워크 접근, 클라우드 메타데이터 탈취, 포트 스캔 등 다양한 공격이 가능합니다.
함수 후킹: 리버스 엔지니어의 비밀 무기
함수 후킹은 처음에는 겁나는 기법처럼 들리지만, 이해하고 나면 엄청나게 강력한 도구가 된다. 악성코드 디버깅, 안티치트 우회, CTF 문제 풀이 어디서든 후킹을 쓰면 프로그램 동작을 런타임에 가로채고 수정할 수 있다.