Pie4 PIE PIC와 PIE PIC 리눅스에서 ELF 실행 파일(Executable)과 공유 오브젝트(Shared Object, SO)로 두 가지가 존재한다. 실행 파일은 addr 처럼 일반적인 실행 파일이 해당하고, 공유 오브젝트는 libc.so와 같은 라이브러리 파일이 해당한다. 공유 오브젝트는 기본적으로 재배치(Relocation)가 가능하도록 설계되어 있다. 이는 메모리의 어느 주소에 적재되어도 코드의 의미가 훼손되지 않음을 의미한다. 이를 Position-Independent Code(PIC)라고 한다. // Name: pic.c // Compile: gcc -o pic pic.c // : gcc -o no_pic pic.c -fno-pic -no-pie #include char *data = "Hello .. 2021. 12. 29. GCC 보호 기법 설정 ASLR $ cat /proc/sys/kernel/randomize_va_space 2 값이 0이면 ASLR 없음, 1이면 stack, library 랜덤, 2이면 stack, heap, library 랜덤 설정. DEP/NX $ gcc ... -z execstack# DEP/NX 제거 CANARY $ gcc ... -fno-stack-protector# SSP 해제 $ gcc ... -fstack-protector# SSP 설정 PIE $ gcc ... -no-pie# PIE 해제 $ gcc ... -fpie# .text 랜덤 $ gcc ... -fpie -pie# PIE 설정 RELRO $ gcc ... -z relro# PARTIAL-RELRO 설정 $ gcc ... -z relro -z now# .. 2021. 12. 16. Seoul Housing 이번에 풀어볼 문제는 Hsapce에서 열린 CTF문제중 system 분야의 문제인 Seoul Housing 문제를 풀어보도록 하겠다. 1. Mitigation 메모리 보호기법은 전부 걸려있고 stripped 파일이다. 2. 문제 확인 실행시켜보면 실행되어 있는 프로세스를 보여주고 총 두번 입력을 받는데 입력받은 것을 출력해준다. 3. 풀이 메인 함수 부분을 보면 sub_88A 함수가 보이고 문제를 실행 시켯을때 처럼 입력을 두번 받고 두번 출력해준다. 보면 카나리가 존재하는것을 확인 할 수 있고 read함수에서 BOF 취약점이 존재한다. sub_88A 함수에서는 ps명령어를 실행 시킨다. gdb를 통해 read함수에서 입력을 받고 스택 상태를 보면 빨간 박스는 카나리 부분이고 초록 박스는 파이 부분이다... 2021. 5. 1. BOF_PIE 1. Mitigation RELRO : Partial RELRO GOT Overwrite가 가능하다. PIE, NX enabled Code 영역을 포함한 모든 메모리 영역을 랜덤하게 매핑되고, 실행 권한이 없다. 2. 문제 확인 프로그램을 실행시키면 Hello, Do you know j0n9hyun? j0n9hyun is 주소가 출력된다. 입력 값을 입력하면 Nah...라는 문자를 출력하고 종료한다. 3. 풀이 IDA를 통해 함수 영역을 살펴보면 j0n9hyun 함수와 welcome 함수가 있는 것 을 확인할 수 있다. welcome 함수에서 welcome 함수의 주소를 출력해주고 그 다음 입력을 받는다. v1은 ebp로 부터 0x12만큼 떨어진 곳에 있다. 즉 18 바이트이다. 입력을 통해 리턴주소를 .. 2021. 3. 16. 이전 1 다음