본문 바로가기

Pwnable

how2heap fastbin_dup_into_stack 원본 소스 : https://github.com/shellphish/how2heap/blob/master/fastbin_dup_into_stack.c번역한 소스1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include int main(void) { printf("이 파일은 fastbin_dup_kr.c에서 확장되어 malloc의 리턴 주소를 컨트롤 된 주소(여기서는 스택 주소)로 리턴할 수 있도록 합니다.\n"); unsigned long long stack_var; printf("우리가 malloc()의 리턴으로 원하는 주소는 %p 입니다.\n", 8 + (char*)&stack.. 더보기
how2heap fastbin_dup 원본 소스 : https://github.com/shellphish/how2heap/blob/master/fastbin_dup.c번역한 소스123456789101112131415161718192021222324252627282930313233#include #include int main(void) { printf("이 파일은 fastbin에서의 간단한 double-free 공격을 보여줍니다.\n"); printf("먼저 세 개의 버퍼를 할당합니다.\n"); int* a = malloc(8); int* b = malloc(8); int* c = malloc(8); printf("첫 번째 malloc(8): %p\n", a); printf("두 번째 malloc(8): %p\n", b); printf("세.. 더보기
how2heap first_fit 원본 소스 : https://github.com/shellphish/how2heap/blob/master/first_fit.c번역한 소스 (영어 5등급이 무슨 번역...)12345678910111213141516171819202122232425262728293031323334353637#include #include #include int main(void) { printf("이 파일은 공격에 관한 입증을 하는 것이 아닌 glibc메모리 할당의 본질을 보여줍니다.\n"); printf("glibc는 free되어 있는 청크를 선택할 때 first-fit이라는 알고리즘을 사용합니다.\n"); printf("만약에 청크가 free되어 있고 그 크기가 충분하다면, malloc은 이 청크를 선택할 것입니다.\n".. 더보기
Return Oriented Programming 기초 ROP 기초에 대한 지식이 부족하여 다시 공부하고 정리해서 올립니다~~ 먼저 보호 기법에 대해서 알아보겠습니다.NX(Non eXcutable) - 모든 주소에 쓰기 권한과 실행 권한을 동시에 주지 않는 보호기법입니다. 이로 인해서 코드 영역에는 쓰기를 할 수 없고 데이터 영역에는 실행할 수 없게 됩니다.PIC(Position Independent Code) - 코드가 어디에 존재하든지 서로 상대주소만 같다면 잘 동작하도록 하는 방법입니다. 베이스 주소와 코드의 오프셋으로 이루어져 있습니다.PIE(Position Independent Executable) - 위의 PIC를 바이너리에 적용 한 것입니다. 바이너리 내의 코드가 위 PIC처럼 베이스 주소와 상대 주소로 이루어지게 됩니다. 그리고 PIE가 걸려있.. 더보기