본문으로 건너뛰기

Security::

해킹, 보안, 리버스 엔지니어링, 취약점 분석. 기술적 깊이와 실용성.

📄️07. AES-CBC 비트플립 공격 빠른 감

AES 자체가 깨지는 것과 CBC를 잘못 사용한 프로토콜이 변조되는 것은 다른 문제다. CBC 복호화에서 Pi = DK(Ci) XOR C이므로, 이전 ciphertext 블록의 비트를 바꾸면 다음 plaintext 블록의 같은 위치가 예측 가능한 XOR 차이만큼 바뀐다. 다만 현재 블록의 복호화 결과도 함께 망가지므로, “원하는 문장으로 바꾼다”는 설명은 블록 경계와 패딩을 포함할 때만 정확하다.

📄️16. 유니코드 정규화로 Path Traversal 우회

경로 검사는 문자열 비교가 아니라 서로 다른 표현을 하나의 파일 이름으로 해석하는 과정의 문제다. 프록시가 한 번 디코딩하고 애플리케이션이 다시 디코딩하거나, 필터는 원문을 보고 라이브러리는 정규화된 값을 사용하면 두 계층이 서로 다른 경로를 검사한다. 이 문서는 승인된 실습 환경에서 그 불일치를 확인하는 방법과, 이를 없애는 설계를 다룬다.

📄️26. 심볼 없는 바이너리에서 함수 윤곽 잡기

스트립된 바이너리를 어렵게 만드는 것은 명령어가 아니라 이름의 부재다. 함수가 무엇을 하는지 모른 채 디스어셈블리 한 화면을 읽으면, 분석은 금세 주소 수집으로 변한다. 목표는 모든 함수를 복원하는 것이 아니라, 질문에 필요한 경계를 세우고 그 경계가 맞는지 증명하는 것이다. 아래 절차는 승인된 샘플, CTF, 또는 소유한 프로그램에만 적용한다.

📄️43. CORS 설정 오류와 실전 익스플로잇

CORS는 서버가 브라우저의 교차 출처 읽기를 허용할 범위를 선언하는 정책이다. 서버 간 요청을 막는 방화벽이 아니며, Access-Control-Allow-Origin이 있다고 해서 요청 자체가 인증된 것은 아니다. 이 차이를 놓치면 “헤더가 보인다”와 “민감한 응답을 읽을 수 있다”를 혼동하게 된다. 아래 검사는 승인된 실습 환경이나 자기 소유 API에서만 수행한다.

📄️46. Deserialization 취약점 — 객체 역직렬화로 RCE 터뜨리기

직렬화는 객체의 상태를 저장·전달 가능한 표현으로 바꾸는 일이고, 역직렬화는 그 표현을 다시 객체로 만드는 일이다. 위험은 포맷 자체보다 입력 데이터가 객체 생성과 메서드 호출을 통제하는 구조에서 생긴다. 다음 예시는 승인된 CTF와 격리된 로컬 실습에서 취약성을 이해하기 위한 것이며, 운영 대상에 페이로드를 보내는 방법이 아니다.

📄️66. SSRF 완벽 가이드 - 서버를 역이용하는 공격 기법

SSRF(Server-Side Request Forgery)의 핵심은 URL이 아니라 요청을 대신 보내는 주체의 위치와 권한이다. 브라우저에서 보이지 않는 내부망이 서버에게는 가까울 수 있고, 그 서버의 네트워크 자격이 곧 공격 표면이 된다. 이 문서의 실습은 승인된 랩, CTF, 또는 본인이 소유한 시스템에서만 수행한다. 운영 환경에서는 실제 비밀값 대신 더미 토큰과 전용 콜백 도메인을 사용한다.