send_sig 문제풀이1. 취약점 확인먼저 checksec 명령어로 보호기법을 확인해보자[*] '/home/gunp4ng/project/SF/send_sig/send_sig' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) SHSTK: Enabled IBT: Enabledx64 아키텍처에 Partial RELRO, NX - bit 보호기법이 걸려있는 것을 알 수 있다 1. 어셈블리C코드가 주어지지 않고 바이너리 파일만 주어졌다main 함수가 없어서 obj..
OOB (Out of Bound) 취약점1. Out of bound1. 배열배열이 사용하는 공간의 크기는 요소의 개수와 자료형의 크기를 곱한 값이 된다배열이 포함하는 요소의 개수를 배열의 길이라고 한다배열의 각 요소는 배열의 주소, 요소의 인덱스, 요소 자료형의 크기를 이용하여 계산된다 OOB (Out of Bound)는 요소를 참조할 때 인덱스 값이 음수거나 배열의 길이를 벗어날 때 발생한다프로세스는 계산한 주소가 배열의 범위 안에 있는지 검사하지 않는다 사용자가 인덱스의 값을 임의로 설정할 수 있다면, 배열의 주소로부터 특정 오프셋에 있는 메모리의 값을 참조할 수 있다→ 이러한 취약점을 Out of Bound 라고 한다 2. 예제 코드// Name: oob.c// Compile: gcc -o oob ..
off_by_one_000 문제풀이1. 취약점 확인먼저 checksec 으로 취약점을 확인해보자[*] '/home/gunp4ng/working/dreamhack/off_by_one_000/off_by_one_000' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) Stripped: Nox86 아키텍처에 NX-bit, Partial RELRO 가 적용된 것을 볼 수 있다 1. C 코드#include #include #include #include #include char cp_na..
off_by_one_001 문제풀이1. 취약점 확인먼저 checksec 으로 취약점을 확인해보자[*] '/home/gunp4ng/study/SF/off_by_one_001/off_by_one_001' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) Stripped: Nox86 아키텍처에 Partial RELRO 가 적용된 것을 확인할 수 있다 1. C 코드#include #include #include #include void alarm_handler(){ puts("TIM..
basic_rop_x86 문제풀이1. 취약점 확인1. C언어checksec 으로 취약점을 확인해보자[*] '/home/gunp4ng/pwnable/Dreamhack/basic_rop_x86/basic_rop_x86' Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) Stripped: Nox86 아키텍처에 Partial RELRO, NX-bit 가 적용된 것을 알 수 있다.Partial RELRO 가 적용되어 GOT Overwrite 가 가능하다. C 코드를 확인해보자#include..
basic_rop_x64 문제풀이1. 취약점 확인1. C언어checksec 명령어로 취약점을 확인해보자[*] '/home/gunp4ng/pwnable/Dreamhack/basic_rop_x64/basic_rop_x64' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) Stripped: Nox64 아키텍처에 Partial RELRO, NX-bit 가 적용된 것을 볼 수 있다.Partial RELRO 가 적용되어 GOT Overwrite 가 가능하다. C코드를 확인해보자#includ..
rop 문제 풀이1. 취약점 확인1. C언어checksec 명령어로 취약점을 확인해보자[*] '/home/gunp4ng/pwnable/Dreamhack/rop/rop' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)x64 아키텍처에 Partial RELRO, Nx-bit, Stack Canary 가 적용된 것을 알 수 있다.Partial RELRO 가 적용되어 GOT Overwirte 는 할 수 있다. C 코드를 확인해보자// Name: rop.c// Compile: gcc -o rop rop..
NX-bit, ASLR1. NX-bit (No-eXecute-bit)1. NX-bit 란?Nx-bit (No-eXecute-bit) 는 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역을 분리하는 보호 기법이다.메모리 영역에 쓰기 권한과 실행 권한이 함께 있으면 시스템이 취약해지기 쉽다. 코드 영역에 쓰기 권한이 있다면 공격자는 코드를 수정하여 원하는 코드를 실행할 수 있게 되고,스택 영역에 실행 권한이 있다면 Return to Shellcode 같은 공격을 시도할 수 있다. 즉, NX-bit 는 code 영역을 제외한 나머지 영역에 실행 권한을 넣지 않는 보호기법이다. 2. NX-bit 적용gcc 는 기본적으로 NX-bit 보호기법을 적용해서 컴파일한다.-z execstack따라서 Nx-bit..
ssp_001 문제 풀이1. 취약점 확인1. C 언어먼저 checksec 명령어로 취약점을 확인해보자$ checksec ssp_001[*] '/workspaces/codespaces-blank/Dreamhack/ssp/ssp_001' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)x86 아키텍처에 카나리가 적용된 것을 확인할 수 있다. 이제 C코드를 확인해보자#include #include #include #include void alarm_handler() { puts("TIME OUT"); ex..
Return to Shellcode 문제 풀이1. 취약점 확인1. C언어먼저 checksec 명령어로 취약점을 확인해보자$ checksec r2s[*] '/workspaces/codespaces-blank/Dreamhack/r2s/r2s' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX unknown - GNU_STACK missing PIE: PIE enabled Stack: Executable RWX: Has RWX segmentsx64 아키텍처 에 canary 가 적용된 것을 확인할 수 있다. C언어를 확인해보자.// Name: r2s.c/..