00. Security & Hacking
// OFFENSIVE — 기술적 깊이 × 실용성
01. OAST로 SSRF를 빠르게 검증하는 방법
SSRF 의심 지점이 보이면 바로 DNS/HTTP 아웃바운드가 나는지 확인하는 게 핵심입니다. OAST(Out‑of‑Band Application Security Testing)는 요청을 외부로 튀게 만든 뒤, 그 흔적을 관찰하는 방식이라 WAF나 필터에 막혀도 증거를 남깁니다.
02. LD_PRELOAD 런타임 후킹 한 번에 정리
리버스 엔지니어링 초반에 바이너리를 고치기 어렵다면 LD_PRELOAD가 제일 빠른 우회 루트입니다. 동적 링커가 심볼을 해석할 때 우선 로드되는 공유 라이브러리로 함수를 덮어씌우는 방식이죠.
03. 브라우저 익스텐션 리버싱 빠른 루틴
브라우저 확장 프로그램 분석에서 가장 중요한 파일은 압축된 번들이 아니라 manifest.json이다. 승인된 확장 프로그램, 자기 소유 코드, CTF 샘플만 복사하고 실행한다. Chrome과 Edge의 Manifest V3에서는 background page 대신 service worker가 중심이 될 수 있으므로, 버전과 브라우저 차이를 먼저 기록한다.
04. SROP 빠른 감 잡기: sigreturn로 레지스터 풀세팅
SROP(Sigreturn Oriented Programming)는 sysrtsigreturn을 호출해 커널이 스택에 있는 sigcontext를 그대로 복원하게 만드는 기법입니다. ROP 체인 길이를 줄이거나, 가젯이 부족할 때 레지스터를 한 번에 세팅할 수 있어요. 핵심은 가짜 시그널 프레임을 스택에 올리고 syscall; ret로 rt_sigreturn을 트리거하는 것.
05. ret2csu 미니 치트시트
PIE/NX 환경에서 ROP 가젯이 부족할 때 libccsuinit의 두 가젯을 써서 함수 호출을 만들 수 있습니다. 핵심은 rdi/rsi/rdx 세팅과 함수 포인터 호출을 한 번에 끝내는 것.
06. Shadow DOM XSS 헌팅 포인트
최근 프런트엔드는 Web Components를 써서 Shadow DOM 안에 UI를 숨깁니다. 그런데 sanitizer가 light DOM만 검사하는 경우가 있어요. 이때 attachShadow({mode:"open"})로 노출된 root를 통해 unsafe HTML을 주입하면 XSS로 이어질 수 있습니다.
07. AES-CBC 비트플립 공격 빠른 감
AES 자체가 깨지는 것과 CBC를 잘못 사용한 프로토콜이 변조되는 것은 다른 문제다. CBC 복호화에서 Pi = DK(Ci) XOR C이므로, 이전 ciphertext 블록의 비트를 바꾸면 다음 plaintext 블록의 같은 위치가 예측 가능한 XOR 차이만큼 바뀐다. 다만 현재 블록의 복호화 결과도 함께 망가지므로, “원하는 문장으로 바꾼다”는 설명은 블록 경계와 패딩을 포함할 때만 정확하다.
08. CTF에서 checksec로 바이너리 방어기법 빠르게 파악하기
checksec은 익스플로잇을 선택하는 버튼이 아니라 바이너리의 초기 가설을 세우는 요약이다. CTF나 자기 소유 테스트 바이너리에서만 사용하고, 보호 기능이 켜졌다는 사실을 곧바로 “안전하다” 또는 “우회 가능하다”로 번역하지 않는다.
09. DNS Rebinding: origin과 endpoint의 경계
DNS Rebinding은 공격자가 소유한 hostname의 DNS 응답을 바꿔, 브라우저가 처음에는 외부 서버에서 코드를 받고 나중에는 같은 hostname으로 내부망이나 loopback 서비스에 연결하게 만드는 공격이다. 핵심은 DNS 자체를 해킹하는 것이 아니라 웹의 origin identity와 실제 network endpoint 사이의 간극을 이용하는 데 있다.
10. ECB 컷앤페이스트 공격 메모
AES-ECB는 블록 단위로 독립 암호화되기 때문에, 동일 평문 블록은 동일 암호문 블록으로 매핑됩니다. 이 특성을 이용해 CTF에서 권한 상승 토큰을 만들 수 있습니다.
11. Host 헤더 공격 빠른 체크
웹앱은 종종 Host 값을 기반으로 리다이렉트 URL 생성, 절대경로 링크, 메일/비밀번호 재설정 링크를 만듭니다. 이때 프록시/캐시/앱의 신뢰 경계가 어긋나면 Open Redirect, 링크 하이재킹, 캐시 독으로 이어질 수 있어요.
12. 소스맵으로 웹 리버싱 빠르게 끝내기
프로덕션 번들 JS는 난독화돼도 .map이 남아있으면 원본 구조가 노출됩니다. 공격 관점에서는 숨은 API, 피처 플래그, 디버그 라우트*를 찾는 지름길이죠.
13. OAuth redirect_uri 함정 메모
OAuth/OIDC에서 redirect_uri 검증이 느슨하면 토큰 탈취나 계정 연결 하이재킹으로 이어집니다. CTF에서 자주 나오는 패턴만 짧게 정리.
14. RSA 공통 모듈러스 취약점, CTF에서 바로 써먹기
RSA에서 같은 N(modulus)을 재사용하면서 서로 다른 e로 암호화하면, 조건만 맞으면 평문을 복구할 수 있습니다. CTF에서 종종 “두 개의 공개키가 N이 같네?” 형태로 등장해요.
15. strace/ltrace로 리버싱 10분 컷 단서 찾기
시스템 호출 추적은 프로그램의 의도를 알려주는 도구가 아니라, 관찰 가능한 경계를 보여주는 도구다. 승인된 CTF 바이너리나 자기 소유의 Linux 실행 파일에서 먼저 외부 세계와의 접점을 기록하면, 정적 분석이 조사할 범위를 줄일 수 있다. “10분 컷”은 목표가 아니라, 추측을 빨리 버리는 습관에 가깝다.
16. 유니코드 정규화로 Path Traversal 우회
경로 검사는 문자열 비교가 아니라 서로 다른 표현을 하나의 파일 이름으로 해석하는 과정의 문제다. 프록시가 한 번 디코딩하고 애플리케이션이 다시 디코딩하거나, 필터는 원문을 보고 라이브러리는 정규화된 값을 사용하면 두 계층이 서로 다른 경로를 검사한다. 이 문서는 승인된 실습 환경에서 그 불일치를 확인하는 방법과, 이를 없애는 설계를 다룬다.
17. YARA 룰로 리버싱 시그니처 잡기
YARA 룰은 악성 여부를 판결하는 마법의 문장이 아니라, 바이너리와 메모리에서 관찰한 가설을 반복해서 확인하는 작은 계측기다. 리버싱에서는 “같은 패밀리인가”와 “이 기능이 존재하는가”를 빠르게 태깅하고, 이후 디스어셈블러와 행위 로그로 검증한다. 샘플은 합법적으로 확보한 CTF·IR 데이터와 격리된 분석 환경에서만 다룬다.
18. Zip Slip 취약점 빠르게 정리
압축 해제기는 엔트리 이름을 파일 경로로 바꾼다. 이름에 상위 디렉터리나 절대 경로가 들어 있고 해제 대상과의 관계를 확인하지 않으면, 압축 파일이 의도한 폴더 밖에 파일을 쓸 수 있다. 업로드 기능을 점검할 때는 자기 소유의 격리된 랩에서 무해한 sentinel 파일로만 검증한다.
19. angr로 심볼릭 실행 맛보기
심볼릭 실행은 정답을 “추측”하는 도구가 아니다. 입력 바이트를 기호로 두고 프로그램 경로가 요구하는 제약식을 수집한 뒤, 그 제약을 만족하는 구체 입력을 푸는 방법이다. 따라서 대상은 승인된 crackme, CTF, 자기 소유 바이너리로 한정하고, 결과가 실제 의미를 갖는지 디버거로 다시 확인한다.
20. ptrace 안티디버깅 우회 메모
안티디버깅은 공격자를 막는 주문이 아니라 관찰 조건을 바꾸는 코드다. 승인된 CTF 또는 자기 소유 샘플에서만 분석하고, 우회보다 먼저 어떤 신호를 검사하는지와 그 검사가 보호하려는 자산을 기록한다. Linux의 ptrace(PTRACE_TRACEME, ...)는 호출 성공 여부만으로 디버거 존재를 추정할 수 있지만, 모든 안티디버깅이 ptrace인 것은 아니다.
21. CTF에서 로그 누출로 플래그 뽑는 법
로그 누출 문제의 핵심은 파일 경로를 맞히는 요령이 아니다. 애플리케이션이 어떤 입력을 어떤 보존 기간으로 기록하고, 그 기록을 누가 읽을 수 있는지 데이터 흐름을 복원하는 일이다. 아래 절차는 문제에서 명시된 컨테이너와 자기 소유 실습 환경에 한정한다.
22. GraphQL 인트로스펙션 악용 포인트
GraphQL은 스키마가 API 설명서 자체입니다. 인트로스펙션이 열려 있으면 공격자는 쿼리 표면을 그대로 확보합니다. CTF에서도 흔한 초반 단서죠.
23. 패치 디핑으로 N-day 취약점 찾기
패치가 공개된 직후, diff는 최고의 힌트입니다. 업데이트 전/후 바이너리 또는 소스의 변경 지점을 비교해 취약점 후보를 좁히는 것이 핵심입니다. CTF에서도 “패치된 함수가 곧 플래그로 가는 길”인 경우가 많습니다.
24. ELF PLT/GOT 하이재킹 핵심 흐름
리버싱이나 CTF에서 GOT overwrite는 아직도 강력한 우회 포인트입니다. 동적 링킹 흐름만 명확히 잡으면, 호출 경로를 깔끔하게 갈아탈 수 있어요.
25. ret2dlresolve: 심볼 해석기를 역이용하는 ROP 트릭
ret2dlresolve는 동적 링커(ld.so)의 심볼 해석 과정을 악용해, 바이너리에 없는 함수도 ROP로 호출하는 기법입니다. 특히 PLT/GOT가 제한된 CTF 바이너리에서 강력합니다.
26. 심볼 없는 바이너리에서 함수 윤곽 잡기
스트립된 바이너리를 어렵게 만드는 것은 명령어가 아니라 이름의 부재다. 함수가 무엇을 하는지 모른 채 디스어셈블리 한 화면을 읽으면, 분석은 금세 주소 수집으로 변한다. 목표는 모든 함수를 복원하는 것이 아니라, 질문에 필요한 경계를 세우고 그 경계가 맞는지 증명하는 것이다. 아래 절차는 승인된 샘플, CTF, 또는 소유한 프로그램에만 적용한다.
27. WAF 우회 플레이북: 시그니처를 흔드는 작은 변형
WAF 테스트의 목적은 차단 문자열을 찾아내는 데 있지 않다. 프록시, 웹 서버, 프레임워크가 같은 요청을 같은 의미로 해석하는지 확인하고, 정상 사용자의 요청까지 망가뜨리지 않는 규칙을 만드는 데 있다. 아래 절차는 사전 승인된 랩·CTF·자기 소유 시스템에서만 수행한다.
28. WASM 리버싱으로 웹 보안 포인트 찾기
WebAssembly는 소스 코드를 숨기는 금고가 아니다. 브라우저가 실행해야 하는 모듈인 만큼 다운로드되고, import·export와 메모리 계약이 관찰된다. 보안 검토의 질문은 “얼마나 어렵게 읽히는가”가 아니라 “클라이언트가 결정해도 되는 값을 서버가 믿고 있는가”여야 한다. 분석은 소유한 앱이나 승인된 실습 대상으로 한정한다.
29. HTTP Request Smuggling 감 잡기
요청 스머글링은 프록시와 백엔드가 하나의 바이트 스트림에서 요청의 끝을 다르게 정할 때 생긴다. Content-Length와 Transfer-Encoding의 충돌은 대표적인 원인이지만, 문제의 본질은 헤더 이름 하나가 아니라 서로 다른 HTTP 파서와 연결 재사용의 조합이다. 실험은 격리된 랩과 승인된 CTF에서만 진행한다.
30. Z3로 CTF 암호 퍼즐 푸는 루틴
Z3가 암호를 대신 깨주는 것은 아니다. Z3는 사람이 읽은 문제를 제약식으로 정확히 번역했을 때, 가능한 값의 존재와 조건의 충돌을 증명하는 도구다. 여기서 다루는 코드는 CTF와 자기 소유의 퍼즐에만 사용하며, 실제 키나 서비스에 적용하지 않는다.
31. Binary Diffing: 패치에서 취약점 찾는 빠른 루틴
바이너리 diff는 패치 노트를 대신하는 지도가 아니라, 두 빌드의 차이를 설명하는 가설 생성기다. 소유한 소프트웨어나 공개 패치 분석, 승인된 취약점 연구에만 사용한다. “바뀐 함수가 곧 취약점”이라는 단정은 컴파일러 최적화와 빌드 환경 차이를 무시한다.
32. CTF 크랙미 리버스 패턴 5분 요약
크랙미를 빠르게 푼다는 말은 무작정 디컴파일러의 결과를 읽는다는 뜻이 아니다. 먼저 프로그램이 무엇을 관찰하고, 어느 조건에서 실패하며, 비교값을 어디서 만들었는지를 좁히는 일이다. 아래 흐름은 허가받은 CTF 바이너리나 직접 만든 연습용 실행 파일에만 적용한다.
33. CSP 우회 노트: nonce, strict-dynamic, 그리고 실수들
CSP는 XSS를 없애는 마법의 필터가 아니라 브라우저가 스크립트의 신뢰 경계를 집행하도록 만드는 선언이다. 따라서 우회 분석의 첫 질문은 “어떤 문자열을 막았나?”가 아니라 “신뢰된 스크립트가 무엇을 로드하고, 데이터가 어떤 싱크에 도달하는가?”여야 한다. 실습은 자기 소유 애플리케이션과 허가된 CTF에서만 한다.
34. Hash Length Extension: MD5/SHA1 서명 우회 핵심
웹에서 hash(secret || msg) 형태의 서명을 쓰면 length extension에 취약합니다. 공격자는 원본 해시와 msg 길이를 추정해 추가 데이터를 붙인 새 해시를 만들 수 있어요.
35. Ghidra + Frida로 하이브리드 리버싱 루틴 만들기
정적 분석은 구조를, 동적 분석은 현실 동작을 보여준다. CTF나 실전 분석에서 두 툴을 묶어 쓰면 속도가 확 늘어난다.
36. Padding Oracle: 암호문이 알려주는 비밀
Padding oracle은 공격자가 보낸 암호문의 패딩이 유효한지 외부에서 구분할 수 있는 복호화 인터페이스다. 공격자는 키나 복호화 결과를 직접 보지 못해도, 이 1비트짜리 응답을 반복해서 물어 CBC 평문을 바이트 단위로 복구할 수 있다.
37. 웹 캐시 포이즈닝: CDN을 공격 표면으로 만들기
캐시 포이즈닝은 캐시가 틀린 응답을 저장하는 현상이 아니라, 캐시 키가 응답을 결정하는 모든 입력을 표현하지 못하는 현상이다. 호스트·언어·쿠키·헤더를 앱이 사용하면서 캐시는 URL만 키로 삼으면, 한 요청의 변형이 다른 요청의 응답으로 재사용될 수 있다. 검증은 승인된 랩이나 자기 소유 도메인에서 수행한다.
38. Android APK 리버스 엔지니어링
APK 분석의 첫 질문은 “비밀을 꺼낼 수 있는가”가 아니라 “이 패키지가 어떤 신뢰 경계를 가정하는가”다. 승인된 앱, CTF 샘플, 자기 소유 APK만 복사하고 분석한다. APK는 ZIP 컨테이너지만, 매니페스트·DEX·네이티브 라이브러리·리소스가 서로 다른 단서를 제공하므로 압축을 푸는 것만으로 끝나지 않는다.
39. Linux 커널 익스플로잇 입문: LPE의 세계
커널 익스플로잇은 해킹의 정점이라 불린다. 일반 유저 권한에서 root를 탈취하는 LPE(Local Privilege Escalation) — CTF의 pwn 카테고리에서도 종종 등장하고, 실제 APT 공격에서도 핵심 단계다.
40. Use-After-Free: 해방된 메모리를 다시 잡아라
UAF(Use-After-Free) 는 heap 메모리를 free() 한 이후에도 해당 포인터를 계속 사용할 때 발생하는 취약점이다. 현대 브라우저, 커널, 서버 소프트웨어에서 끊임없이 발견되며 CTF에서도 단골 주제다.
41. API 보안 테스팅: 실전 가이드
API 테스트의 핵심은 많은 요청을 보내는 일이 아니라, 한 요청이 어느 신뢰 경계를 넘는지 설명하는 일이다. 명시적 범위의 자기 서비스, 승인된 테스트 환경, CTF에서만 수행한다. 테스트 계정과 합성 데이터, 낮은 요청률을 사용하고 운영 사용자 데이터는 읽거나 바꾸지 않는다.
42. 버퍼 오버플로우 기초: 바이너리 익스플로잇의 첫걸음
버퍼 오버플로우는 “긴 문자열을 넣으면 코드 실행”이라는 공식이 아니다. 경계 밖 쓰기가 어떤 객체를 덮고, 그 값이 이후 제어 흐름이나 보안 결정에 사용되는지가 핵심이다. 아래 실습은 자기 소유의 로컬 프로그램과 CTF 바이너리로만 수행한다.
43. CORS 설정 오류와 실전 익스플로잇
CORS는 서버가 브라우저의 교차 출처 읽기를 허용할 범위를 선언하는 정책이다. 서버 간 요청을 막는 방화벽이 아니며, Access-Control-Allow-Origin이 있다고 해서 요청 자체가 인증된 것은 아니다. 이 차이를 놓치면 “헤더가 보인다”와 “민감한 응답을 읽을 수 있다”를 혼동하게 된다. 아래 검사는 승인된 실습 환경이나 자기 소유 API에서만 수행한다.
44. 암호학 공격 기법 입문: Padding Oracle부터 Bit-Flipping까지
암호문이 보인다고 곧바로 공격 가능한 것은 아니다. 먼저 공격자가 암호문을 바꿀 수 있는지, 복호화 결과를 관찰할 수 있는지, 키와 nonce가 어떻게 관리되는지를 분리해 모델링해야 한다. 다음 내용은 Cryptopals 같은 교육용 문제와 승인된 테스트 시스템을 위한 분석 틀이다.
45. CTF 정찰: OSINT 기법 완전 정복
OSINT는 공개된 정보를 많이 모으는 경쟁이 아니라, 출처와 시간 범위를 통제하며 가설을 검증하는 작업이다. CTF에서는 문제에서 허용한 도메인·계정·파일만 조사하고, 실제 사람이나 조직을 대상으로 한 접촉·로그인·스캔은 하지 않는다. 공개되어 있다는 사실이 사용 목적까지 허가한다는 뜻은 아니다.
46. Deserialization 취약점 — 객체 역직렬화로 RCE 터뜨리기
직렬화는 객체의 상태를 저장·전달 가능한 표현으로 바꾸는 일이고, 역직렬화는 그 표현을 다시 객체로 만드는 일이다. 위험은 포맷 자체보다 입력 데이터가 객체 생성과 메서드 호출을 통제하는 구조에서 생긴다. 다음 예시는 승인된 CTF와 격리된 로컬 실습에서 취약성을 이해하기 위한 것이며, 운영 대상에 페이로드를 보내는 방법이 아니다.
47. Format String Vulnerabilities: CTF에서 자주 나오는 그 버그
포맷 스트링 취약점은 오래된 버그지만 CTF에서 여전히 단골 문제다. 원리만 알면 메모리 읽기부터 임의 쓰기까지 가능하다.
48. Frida로 시작하는 동적 분석 (Dynamic Analysis with Frida)
동적 분석은 프로그램이 실행 중일 때 그 동작을 관찰하고 수정하는 기법입니다. Frida는 이러한 동적 분석을 위한 강력한 도구로, CTF, 모바일 앱 분석, 취약점 연구 등 다양한 분야에서 활용됩니다.
49. Ghidra로 리버스 엔지니어링하기: 실전 가이드
Ghidra는 NSA가 공개한 오픈소스 리버스 엔지니어링 프레임워크로, 보안 연구자, CTF 참가자, 악성코드 분석가 모두에게 필수 도구가 되었다. 이 가이드는 Ghidra로 바이너리를 분석하는 실전 기법을 다룬다.
50. Heap Exploitation: tcache 공격 기법 입문
TL;DR: glibc의 tcache를 이해하면 heap exploit의 절반은 풀린다. 구조와 공격 패턴을 정리했다.
51. JWT 보안 취약점: 흔한 실수와 익스플로잇 기법
JWT(JSON Web Token)는 현대 웹 애플리케이션 어디에나 있다. 편리하고 무상태적이며 구현하기 쉽다 — 바로 그래서 잘못 구현되는 경우가 많다. CTF와 실제 애플리케이션에서 자주 만나는 JWT 취약점을 알아보자.
52. Prototype Pollution: JS의 숨겨진 취약점
JavaScript의 prototype 체인을 오염시켜 앱 전체 동작을 바꾸는 공격 기법이다. 이름은 생소해도, 실전 CTF와 Bug Bounty에서 꽤 자주 등장한다.
53. Pwntools로 CTF 바이너리 익스플로잇하기
바이너리 익스플로잇은 CTF에서 가장 도전적이면서도 보람 있는 카테고리 중 하나다. 근본적인 취약점을 이해하는 것도 중요하지만, 올바른 도구를 갖추는 것이 문제 해결과 막힘의 차이를 만들 수 있다. 바로 pwntools — CTF 바이너리 익스플로잇의 사실상 표준이 된 Python 라이브러리다.
54. Radare2로 CTF 바이너리 풀기
Radare2(r2)는 CTF 바이너리 익스플로잇 문제를 다루는 플레이어들에게 필수가 된 강력한 오픈소스 리버스 엔지니어링 프레임워크다. Ghidra나 IDA Pro가 세련된 GUI를 제공하는 반면, radare2의 커맨드라인 인터페이스와 스크립팅 능력은 빠른 분석에 믿을 수 없을 만큼 유연하다.
55. ROP Chain: 스택 카나리아를 우회하는 방법
현대 바이너리는 NX(Non-Executable Stack)와 Stack Canary로 무장하고 있다.
56. Shellcode 작성 기초 — 어셈블리부터 바이트로
Shellcode는 취약점을 익스플로잇할 때 실행시키고자 하는 raw 머신코드 바이트 시퀀스다. Buffer overflow나 ROP chain의 페이로드로 삽입되며, CTF의 단골 소재이기도 하다.
57. 사이드 채널 공격: 소리 없는 해킹
암호 알고리즘이 수학적으로 완벽해도 구현체는 뚫린다. Side-Channel Attack이 바로 그 빈틈을 노린다.
58. SSTI: 서버사이드 템플릿 인젝션 완전 분석
SSTI는 사용자 입력이 템플릿의 데이터가 아니라 템플릿 소스로 해석될 때 발생한다. 브라우저에서 실행되는 XSS와 달리 서버 렌더러의 권한과 네트워크 위치가 영향을 받으므로, 진단은 자기 소유 애플리케이션이나 승인된 CTF에서 무해한 표현식으로만 수행한다.
59. 웹 애플리케이션 퍼징: 숨겨진 버그 찾기
웹 퍼징은 요청 수를 늘리는 일이 아니라 무엇이 달라졌을 때 애플리케이션의 의미가 달라지는지 찾는 실험이다. 승인된 테스트 환경, CTF, 또는 자기 소유 서비스에서만 실행한다. 운영 서비스에 대량 요청을 보내거나 제한을 우회하기 위해 프록시를 돌리는 것은 퍼징이 아니라 장애 유발이다.
60. 웹 보안 테스팅 필수 도구
도구 선택은 능력의 목록보다 관찰의 설계에 가깝다. 프록시는 요청을 이해하게 하고, CLI는 반복을 재현하게 하며, 로그와 코드 리뷰는 자동화 결과를 판정하게 한다. 대상은 소유했거나 명시적으로 허가받은 시스템으로 제한하고, 스캔 범위·속도·데이터 보존 기간을 먼저 정한다.
61. WebSocket 보안: 실시간 통신의 숨겨진 취약점
WebSocket은 연결이 오래 유지된다는 이유만으로 안전하거나 위험해지지 않는다. 문제는 HTTP 요청마다 보이던 인증·인가·감사 경계가 연결과 프레임 안으로 이동한다는 데 있다. 테스트는 승인된 랩과 자기 소유 서비스에서만 수행하며, 다른 사용자의 채널을 구독하거나 메시지를 외부로 전송하지 않는다.
62. XSS 헌팅: 기초부터 버그 바운티까지
XSS를 찾는 일은 페이로드를 많이 아는 일이 아니라 입력이 어떤 문맥에서 다시 해석되는지 추적하는 일이다. 아래 예시는 로컬 랩, CTF, 또는 명시적으로 허가된 테스트 대상에서만 실행한다. 쿠키 탈취, 키로깅, 계정 작업, 제3자 콜백은 실습에서 사용하지 않는다.
63. XXE Injection: XML이 공격 벡터가 되는 순간
XXE(XML External Entity)는 XML이 문서 형식인 동시에 다른 리소스를 참조할 수 있는 언어라는 사실에서 생긴다. 공격의 본질은 DOCTYPE 문자열이 아니라 파서가 외부 엔티티와 네트워크를 해석하도록 허용된 구성이다. 실습은 소유한 로컬 파서와 더미 파일·테스트 DNS에서만 수행한다.
64. 리버스 엔지니어링 101
바이너리를 읽는 법.
65. SQL Injection 마스터하기 - 웹 해킹의 필수 기술
TL;DR: SQL Injection은 여전히 살아있는 가장 위험한 웹 취약점. 기본부터 Blind SQLi, Time-based 공격, sqlmap 활용까지 실전 완벽 정리.
66. SSRF 완벽 가이드 - 서버를 역이용하는 공격 기법
SSRF(Server-Side Request Forgery)의 핵심은 URL이 아니라 요청을 대신 보내는 주체의 위치와 권한이다. 브라우저에서 보이지 않는 내부망이 서버에게는 가까울 수 있고, 그 서버의 네트워크 자격이 곧 공격 표면이 된다. 이 문서의 실습은 승인된 랩, CTF, 또는 본인이 소유한 시스템에서만 수행한다. 운영 환경에서는 실제 비밀값 대신 더미 토큰과 전용 콜백 도메인을 사용한다.
Hijacking Bitcoin: Routing Attacks on Cryptocurrencies 리뷰
인터넷 라우팅이 흔들리면, 탈중앙화된 overlay도 함께 흔들린다.
DBeaver 저장된 비밀번호 복호화
DBeaver는 DB 접속 비밀번호를 로컬에 AES 암호화해서 저장한다. 키를 알고 있으면 복호화 가능하다.
67. 함수 후킹: 리버스 엔지니어의 비밀 무기
함수 후킹은 처음에는 겁나는 기법처럼 들리지만, 이해하고 나면 엄청나게 강력한 도구가 된다. 악성코드 디버깅, 안티치트 우회, CTF 문제 풀이 어디서든 후킹을 쓰면 프로그램 동작을 런타임에 가로채고 수정할 수 있다.