got_overwrite

baby got overwirte 문제 풀이1. 취약점 확인1. C언어먼저 checksec 명령어로 취약점을 확인해보자[*] '/home/gunp4ng/pwnable/got_overwrite/baby_got_overwrite/baby_got_overwrite' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)x64 아키텍처에 Stack Canary, NX-bit, Partial RELRO 가 적용된 것을 확인할 수 있다. 이제 C 코드를 확인해보자// gcc got_overwrite.c -o got_overwri..
GOT Overwrite1. GOT Overwrite1. GOT Overwrite 과정함수를 처음 호출하면 PLT 가 호출되고 PLT 는 GOT 로 점프한다. 첫 번째 호출이면 GOT 에 함수의 실제 주소가 쓰여있지 않아dl_resolve 함수가 실제 함수의 주소를 알아와 GOT 에 써준 뒤 함수를 호출한다. 두 번째 호출부터는 PLT 가 GOT 로 점프하여 함수의 실제 주소를 가져온다.이 때 PLT 는 GOT 에 적힌 주소를 검증하지 않고 가져온다. GOT 를 변조하게 되면 공격자가 원하는 함수를 실행할 수 있다.이러한 공격 기법을 GOT Overwrite 라고 한다. 2. GOT Overwrite 실습//Name : got.c//Compile : gcc -o got got.c -fno-stack-pr..
공유 라이브러리( PLT, GOT)1. 라이브러리란?1. 라이브러리(Library)프로그램은 공통으로 사용하는 함수들이 있다printf, scanf, strlen, memcpy, malloc 등 많은 함수들이 있다이러한 함수들의 정의를 묶어 만든 파일(오브젝트 파일)을 라이브러리라고 한다 C의 표준 라이브러리인 libc 는 우분투에 기본으로 탑재된 라이브러리다 2. Lazy Binding & Now BindingELF(Executable and Linkable Format)리눅스 기반 시스템의 기본 바이너리 형식 Lazy BindingDynamic Linking 방식으로 컴파일 된  바이너리에서함수를 처음 호출할 때 해당 함수의 주소를 공유 라이브러리에서 가져오는 것 Now Binding프로그램이 실행될..
GunP4ng
'got_overwrite' 태그의 글 목록