전체 글 25

Assembly

x86-64 어셈블리어 & 컴퓨터 구조 정리 Write-up목차컴퓨터 구조 기초레지스터프로세스 메모리 레이아웃어셈블리어 기본 문법피연산자와 크기 지정자데이터 이동 · 산술 · 논리 명령어비교와 분기반복문스택 명령어함수와 스택 프레임호출 규약시스템 콜1. 컴퓨터 구조 기초컴퓨터 구조란서로 다른 부품(CPU, GPU, 랜카드 등)이 하나의 기계로 작동하게 만드는 기본 설계도를 컴퓨터 구조(Computer Architecture) 라고 한다. 크게 세 층위로 나뉜다.기능 구조 설계: 폰 노이만 구조, 하버드 구조 등 큰 틀명령어 집합 구조(ISA): CPU가 알아듣는 명령어 규약 (x86, ARM 등)마이크로 아키텍처: 그 명령어를 실제 회로로 구현하는 방식 (파이프라인, 캐시 등)폰 노이만 구조 (Von N..

카테고리 없음 2026.07.16

DOM XSS 트러블슈팅

[Dreamhack] DOM XSS with CSP strict-dynamic — 트러블슈팅 기록jQuery + Bootstrap gadget을 이용한 CSP strict-dynamic 우회 문제. 이 글은 아직 flag를 획득하지 못한 상태의 트러블슈팅 기록이다. 각 시도가 왜 실패했는지, 어떤 오해가 있었는지를 중심으로 정리한다.1. 배경innerHTML sink에 location.hash가 필터 없이 들어가는 전형적인 DOM XSS다. 다만 CSP가 걸려 있어 단순 페이로드로는 실행되지 않고, 페이지에 로드된 nonce 스크립트(jQuery 1.12.4, Bootstrap 3.3.2)를 gadget으로 이용해 strict-dynamic을 우회하는 방법을 사용했다.목표는 봇(관리자)이 가진 flag ..

카테고리 없음 2026.07.10

분기 예측 관련 공격

분기 예측을 노리는 공격들 — Spectre부터 ret2spec까지컴퓨터 구조(파이프라인·투기 실행)와 시스템 해킹(메모리 누출)이 만나는 지점, 마이크로아키텍처 취약점 정리. 분기 예측·투기 실행을 악용하는 대표 공격들을 다룬다.배경 — 왜 분기 예측이 공격 대상이 되는가CPU는 파이프라인을 놀게하지 않으려고, 분기(if, 함수 호출, ret) 결과가 확정되기 전에 ㅇ마 이쪽으로 갈 것이라 예측하고 그 방향 명령어를 미리 실행한다. 이것이 투기 실행(speculative execution) 이다. 예측이 틀리면 그 결과를 되돌린다(rollback).문제는 되돌림이 불완전하다는 데 있다.되돌려지는 것: 레지스터·연산 결과 등 구조적 상태(architectural state)되돌려지지 않는 것: 투기 실행..

카테고리 없음 2026.07.01

SINT

Dreamhack Sint Write-up0. 배경 — C의 Type Error란?이 문제를 이해하려면 먼저 C 언어의 자료형(type) 성질을 알아야 한다.자료형은 변수의 크기를 정하고 용도를 암시한다. int는 4바이트 정수, char는 1바이트 정수/문자처럼, 한 번 선언된 자료형의 크기는 프로그램이 실행되는 동안 바뀌지 않는다. 그렇기 때문에 그 크기나 표현 범위를 벗어나는 값을 다루면 데이터가 유실되거나 의미가 왜곡된다. 이런 부적절한 자료형 사용에서 발생하는 버그를 통틀어 Type Error라고 부른다.자료형을 선언할 때는 변수에 담길 값의 크기·용도·부호(signed/unsigned) 여부를 모두 고려해야 한다. Type Error는 이런 고려 없이 부적절한 자료형을 사용했을 때 발생한다. ..

CTF 2026.06.27

컴퓨터 구조

컴퓨터 구조 정리 — 데이터 표현부터 성능까지컴퓨터 구조 공부 시리즈 전체를 하나로 묶었다. 전체를 관통하는 한 문장: 컴퓨터는 명령어와 데이터를 메모리에 저장해두고, CPU가 하나씩 꺼내 실행하는 기계다. (폰 노이만 구조)목차데이터 표현 — 0과 1로 정수·음수·소수·문자를 표현명령어 — CPU가 알아듣는 ISA와 fetch–decode–execute 사이클CPU 동작 — 제어장치·ALU·플래그, 그리고 파이프라인메모리 계층 — 레지스터→캐시→RAM→디스크, 지역성, 가상 메모리성능 — 무엇이 빠름을 결정하는가1편 데이터 표현컴퓨터 구조 (1) 데이터 표현 — 컴퓨터가 0과 1로 모든 걸 나타내는 법컴퓨터 구조 공부 시리즈 1편. 컴퓨터가 정수, 음수, 소수, 문자를 어떻게 0과 1만으로 표현하는지 ..

카테고리 없음 2026.06.24

NX CVE

NX(DEP) 완화 기법과 CVE — 미적용 사례부터 ROP 우회까지시스템 해킹 공부 정리. NX가 무엇이고, NX가 적용되지 않아 취약점이 발생한 실제 CVE 사례들, 그리고 NX가 있어도 뚫는 ROP 우회 개념까지 정리한다.NX란 무엇인가NX(Non-eXecutable), DEP(Data Execution Prevention) 는 메모리 영역을 "쓰기 가능"과 "실행 가능"으로 구분해, 데이터 영역(스택·힙)에서의 코드 실행을 막는 보안 완화(mitigation) 기법이다. NX 자체는 결함이 아니라 방어 기술이다. 따라서 CVE는 보통 다음 두 경우에 발급된다.NX가 적용되지 않아 셸코드 직행이 성립한 경우NX 강제 메커니즘 자체에 구현 결함이 있는 경우ROP 같은 우회 기법은 그 자체로 CVE가 ..

카테고리 없음 2026.06.24

Basic_Exploitation 001

Dreamhack basic_exploitation_001 Write-up 1. 문제 개요스택 버퍼 오버플로우로 반환 주소(RET)를 덮는 것이 목표다. 이번엔 셸을 따는 함수 대신 cat /flag를 실행해주는 read_flag() 함수가 이미 바이너리 안에 들어있다. 따라서 셸코드를 만들 필요 없이, RET를 read_flag의 주소로 덮기만 하면 플래그가 출력된다.out_of_boundNo PIEOOB 인덱스로 system("/bin/sh") 호출cmd_centerNo Canary오버플로우로 인접 변수 변조 + strncmp 우회raoNo Canary + No PIE오버플로우로 RET를 get_shell 주소로 변조basic_exploitation_000No Canary + NX disabled셸코..

CTF 2026.06.17

Basic_Exploitation 000

Dreamhack basic_exploitation_000 Write-up 1. 문제 개요스택 버퍼 오버플로우로 반환 주소(RET)를 덮는 것까지는 이전 문제들과 같지만, 이번엔 점프할 만한 좋은 함수(get_shell, read_flag)가 주어지지 않는다. 그래서 셸코드를 직접 buf에 주입한 뒤, RET를 buf 자신의 주소로 덮어 내가 심은 셸코드로 실행 흐름을 넘기는 것이 목표다.out_of_boundNo PIEOOB 인덱스로 system("/bin/sh") 호출cmd_centerNo Canary오버플로우로 인접 변수 변조 + strncmp 우회raoNo Canary + No PIE오버플로우로 RET를 get_shell 주소로 변조basic_exploitation_000 No Canary + N..

CTF 2026.06.17

Return Address Overwrite

Dreamhack Return Address Overwrite Write-up0. 스택 버퍼 오버플로우rao를 풀기 전에, 스택 버퍼 오버플로우가 실제로 어떤 공격으로 이어지는지 정리한다. 같은 버그라도 넘친 데이터가 무엇을 덮느냐에 따라 위험도가 달라지며, 크게 세 단계로 구분된다. rao는 이 중 가장 위험한 세 번째 단계(실행 흐름 조작)에 해당한다.버퍼(Buffer)는 데이터가 목적지로 옮겨지기 전에 잠시 모아두는 임시 저장소다. 스택에는 변수들이 메모리상 연속으로 할당되므로, 한 버퍼에 그 크기보다 큰 데이터가 들어오면 넘친 부분이 바로 옆 영역을 덮어쓴다. 이것이 버퍼 오버플로우이며, 덮는 대상에 따라 다음 세 가지 공격이 가능하다. ① 중요 데이터 변조 — 인접 변수 덮기버퍼 뒤에 중요한 변..

CTF 2026.06.17

Out of Bounds

Out of Bounds Write-up1. 문제 개요서버에서 작동 중인 out_of_bound 서비스의 바이너리와 소스 코드가 주어진다. 취약점을 익스플로잇해 셸을 획득하고 flag 파일을 읽는 것이 목표. 플래그 형식은 DH{...}.배열의 임의 인덱스에 접근할 수 있는 OOB(Out of Bounds) 취약점을 이용한 공격을 학습하는 문제다.2. 보호 기법 분석$ checksec out_of_boundArch: i386-32-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x8048000)Stripped: No보호 기법 상태 의미 / 영향ASLR적용스택·라이브러리 주소가 매 실행마다 랜덤화..

CTF 2026.06.17