전체 글

https://github.com/SFrlawoals/SF_Blog
System Hacking/Study Notes

Tcache_Duplicate

*** 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..

CTF Review

[ heap ] HSCTF 2019 aria-writer-v3

glibc-2.28 #1. 문제 살펴보기 #2. 문제 분석하기 int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // eax int v4; // [rsp+4h] [rbp-Ch] int v5; // [rsp+Ch] [rbp-4h] qword_6020E8 = 4919LL; qword_6020F0 = 1056LL; setvbuf(stdout, 0LL, 2, 0LL); printf("whats your name > "); fgets(s, 232, stdin); // bof v4 = strlen(s); if ( s[v4 - 1] == 10 ) s[v4 - 1] = 0; printf("hi %s!\n", s); ..

CTF Review

[ stack ] NACTF 2019 bufover-1

#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() { /..

System Hacking/Study Notes

잡기술

소스 코드 편집기 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..

System Hacking/Study Notes

Unsafe_Unlink

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) { ..

SFjam
Security Study