*** tcache 를 통해 heap이 관리되는 버전인 glibc-2.27 ↑(Ubuntu 18.04↑) 을 기준으로 작성되었습니다 *** Tcache는 heap을 처리하는데 들어가는 시간을 줄이기 위해 만들어졌다. 이전 버전 glibc의 fastbin 동작원리와 비슷하다. #include #include int main() { fprintf(stderr, "This file demonstrates a simple double-free attack with tcache.\n"); fprintf(stderr, "Allocating buffer.\n"); int *a = malloc(8); fprintf(stderr, "malloc(8): %p\n", a); fprintf(stderr, "Freeing tw..
#1. 문제 살펴보기 #include void win() { printf("You win!\n"); char buf[256]; FILE* f = fopen("./flag.txt", "r"); if (f == NULL) { puts("flag.txt not found - ping us on discord if this is happening on the shell server\n"); } else { fgets(buf, sizeof(buf), f); printf("flag: %s\n", buf); } } void vuln() { char buf[16]; printf("Type something>"); gets(buf); printf("You typed %s!\n", buf); } int main() { /..
소스 코드 편집기 Ctrl + Z : 되돌리기 Ctrl + Shift + Z : 되돌리기 취소 ##### Visual Studio 잡기술 ##### Ctrl + f5 : 컴파일 Ctrl + D : 해당 줄 복사 Ctrl + K + C : 드래그 되있는 영역 주석처리 Ctrl + K + U : 드래그 되있는 영역 주석처리 해제 Ctrl + Shift + A : 소스파일 생성 /* 이 사이에 있는 것들은 전부 주석처리 */ ##### Python IDLE 잡기술 ##### f5 : 컴파일 Ctrl + T : 문자자리바꾸기 Ctrl + ] : 오른쪽 들여쓰기 Alt + 3 : 드래그 되있는 영역 주석처리 Alt + 4 : 드래그 되있는 영역 주석처리 해제 ''' 이 사이에 있는 것들은 전부 주석처리 ''' U..
https://github.com/shellphish/how2heap/blob/master/glibc_2.26/unsafe_unlink.c # 시작하기 전에 unsafe_unlink는 unlink의 취약점을 통해서 사용자가 원하는 장소에 원하는 값을 적을 수 있다.이부분에 대해서 공부할 때 heap의 unlink 에 대해서 알고가면 이해하는데 도움이 된다. unlink : heap과 heap의 연결리스트를 끊다. (논리적 연결고리를 해제한다.) ex) A B C => A C unlink 는 free를 할 때 인접한 chunk들이 함께 병합될때 호출되는 매크로이다. /* Take a chunk off a bin list */#define unlink(AV, P, BK, FD) { ..