TOOR

· TOOR
what is environ main 함수의 인자는 사실 3가지가 있다. int main(int argc, char **argv, char **envp); argc – 명령행 인자 개수 argv – 명령행 인자 벡터 envp – 환경 변수 목록 인데 C 언어에서는 envnviron 이라는 전역변수가 미리 만들어져 있다. #include extern char ** environ; int main(){ int i = 0; printf("environ list\n"); for(i = 0; environ[i]; i++){ printf(": %s\n", i, environ[i]); } return 0; } 그래서 아래처럼 extern 으로 environ 을 불러와서 출력해보면 이렇게 환경변수들이 모두 출력되는 것..
· TOOR
What is Stack Pivoting 특정 중심점을 기준으로 스택이 아니었던 공간을 스택 영역인 것 처럼 사용하는 기법. 이 기법을 통해 익스플로잇을 하기 위한 공간이 부족할 때 새로운 스택 영역을 확보할 수 있다. 기존의 스택을 리얼 스택이라고 하고 새롭게 확보된 영역을 페이크 스택이라 한다. 여러 gadget을 이용해서 쓰기 가능한 공간에 Fake Stack을 구성해놓고 chaining 하는 기법 fake stack을 위한 공간으로는 보통 bss + 0x300 영역을 사용하고 체이닝할 때마다 0x100 씩 더해서 새로운 공간을 만들어 준다. 가젯은 RSP 레지스터의 값을 변조할 수 있는 가젯을 사용한다. 여러 가젯들이 있는데 이중 보통 leave; ret; 가젯을 사용한다. pop rsp gadg..
· TOOR
보호되어 있는 글입니다.
· TOOR
// 이름 : uaf_overwrite.c // 컴파일: gcc -o uaf_overwrite uaf_overwrite.c #include #include #include #include 구조체 인간 { 문자 이름[16]; 정수 무게; 나이가 많다; }; 로봇 구조체 { 문자 이름[16]; 정수 무게; 무효 (*fptr)(); }; 구조체 인간 *인간; 구조체 로봇 *robot; char *맞춤[10]; int c_idx; void print_name() { printf("이름: %s\n", 로봇->이름); } 무효 메뉴() { printf("1. 인간\n"); printf("2. 로봇\n"); printf("3. 사용자 정의\n"); printf("> "); } 무효 human_func() { int ..
· TOOR
Heap 일단 heap 청크 구조를 알려면 힙이 무엇인지 알아야 할 것 같다. heap 은 프로그램이 실행되는 도중 동적으로 할당하고 해제하여 사용하는 메모리 영역 이다. 동적 메모리 할당자는 tcmalloc (google) ptmalloc2 (glibc) libumen (solaris) jemalloc (FreeBSD and Firefox) dlmalloc (General purpose allocator) 등이 있다. 우리가 봐야할 것은 ptmalloc2 와 dlmalloc 이다. dlmalloc 리눅스에서 사용되는 힙 관리에 사용되는 memory allocator dlmalloc 이 사용되다가 쓰레드 기능이 추가된 ptmalloc이 현재 사용된다. 그러므로 현재 우분투에서 사용되는 Memory Alo..
· TOOR
glibc 의 FILE 구조체가 가지고 있는 vtable을 변경하는 등 파일 스트림을 이용해 프로그램의 흐름을 변경하는 기법 이지만 vtable 을 변경하는 것은 최근 버전에선 대부분 막혀있다. 그래서 요즘엔 그냥 파일 스트림을 변경한다. 로컬 버전은 glibc 2.35 따라서 실습은 glibc 2.35 기준으로 했다. intro dreamhack - Backgropund : _IO_FILE https://dreamhack.io/lecture/courses/271 파일을 열 때 파일 접근 유형을 명시해야 한다. 대표적으로 읽기 및 쓰기 모드가 있다. 읽기 모드로 파일을 열고, 파일에 데이터를 작성하려하면 에러가 발생하지는 않지만 기능이 수행되지 않는다. 모든 파일 함수는 fopen 함수에서 반환한 파일 ..
· TOOR
Execution 실행을 하면 ya, da, yum, ba 로 이루어진 문자열이 출력된다. 복사해서 같은 문자열을 넣어주면 점수를 얻고 아니면 점수가 감점된다. Audit __int64 __fastcall main(__int64 a1, char **a2, char **a3) { initialize(); puts("Yolo yada yada - Play with me!"); puts("==========================================="); main_func(); return 0LL main 함수에서 minn_func 을 호출한다. unsigned __int64 sub_EAD() { size_t v0; // rax size_t v2; // rax char *s1; // [rsp+..
· TOOR
보호되어 있는 글입니다.
lmxx
'TOOR' 카테고리의 글 목록