전체 글

보호되어 있는 글입니다.
보호되어 있는 글입니다.
PIE (Position Independent Executable)1. PIEPIE (Position Independent Executable) 란?전체가 위치 독립 코드(PIC) 로 이뤄진 실행 가능한 바이너리이다. 무작위 주소에 매핑되어도 실행 가능한 실행 파일이다.ASLR 이 코드 영역에도 적용되게 해주는 기술이다.→ ASLR 을 적용해도 코드 영역의 주소는 변하지 않는다. PIE 는 재배치가 가능하기 때문에,ASLR 이 적용된 시스템에서는 실행 파일도 무작위 주소에 적재된다. 반대로, ASLR 이 적용되지 않은 시스템에서는 PIE 가 적용된 바이너리라도 무작위 주소에 적재되지 않는다. 리눅스는 기본적으로 ASLR 이 적용된 상태이기 때문에PIE 가 적용되면 바이너리가 실행될 때마다 바이너리의 주소..
PIC (Position-Independent Code)1. PIC ?리눅스에서 ELF 는 실행파일(Executable)과 공유 오브젝트(Shared Object, SO) 로 2가지가 있다.실행파일 : 일반적인 실행파일공유 오브젝트 : 라이브러리 파일공유 오브젝트는 재배치(Relocation)가 가능하도록 설계되어 있다.재배치는 메모리의 어느 주소에 적재되어도 코드의 의미가 훼손되지 않는 것을 의미한다. 재배치가 가능한 코드를 Position-Independent Code (PIC) 라고 한다.  2. 정적 라이브러리 (Static  Link Library)1. 정적 라이브러리정적 라이브러리(Static Library) 는 프로그램 컴파일 시 Linking 단계에서라이브러리가 제공하는 코드를 복사하여 실..
보호되어 있는 글입니다.
ropasaurusrex 문제 풀이1. 취약점 확인먼저 checksec 으로 취약점을 확인해보자[*] '/home/gunp4ng/pwnable/Wargame/ropasaurusrex/ropasaurusrex' Arch: i386-32-little RELRO: No RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)x86 아키텍처에 NX-bit 를 제외하곤 아무 보호기법도 걸려있지 않은 것을 알 수 있다. C 코드는 주어지지 않고 바이너리 파일만 주어졌다.gdb 로 어셈블리를 확인해보자main 함수가 없는 것을 알 수 있다.read, write 함수는 있다..
가젯 찾는 법1. 가젯?1. 가젯이란?메모리에 존재하는 명령어를 얘기한다.ret 로 끝나고, 공유 libc 나 바이너리 안에 존재한다. x86 에서는 pop 을 이용해 esp 값을 조정해 호출할 인자수를 조정한다.x64 에서는 pop rdi, pop rsi 등의 레지스터를 이용해 인자를 전달한다. 2. x64 가젯x64 환경에서는 rdi, rsi, rdx, rcx, r8, r9 의 순으로 인자를 전달한다.따라서 pop rdi, pop rsi, pop rdx 같은 함수의 인자 순서에 맞는 레지스터를 찾아야 한다. 가젯을 찾는 방법을 알아보자  2. objudmp 명령어objudmp -d "파일명" | egrep "가젯" -d 는 파일을 디스어셈블 할 때 사용하는 옵션이다. objdump 로 가젯을 찾을 수..
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..
GunP4ng
GunP4ng