목록전체 글 (67)
R4mbb

mkdir test && cd testgit initgit config core.sparsecheckout truegit remote add origin https://github.com/test.git# test/.git/info/sparse-checkoutecho "path" > .git/info/sparse-checkoutgit pull origin master path는 아래처럼 복사가능.

void exit (int status){ __run_exit_handlers (status, &__exit_funcs, true, true);}void attribute_hidden __run_exit_handlers (int status, struct exit_function_list **listp, bool run_list_atexit, bool run_dtors){ /* First, call the TLS destructors. */#ifndef SHARED if (&__call_tls_dtors != NULL)#endif if (run_dtors) __call_tls_dtors (); __libc_lock_lock (__exit_funcs_lock); /* W..
Heap fd 조작 시 safe linking으로 변조 되어있을 때 필요한 코드 # Decrypt codedef dec(encrypt): middle_state = (encrypt >> 12) ^ encrypt return middle_state ^ (middle state >> 24)# Encrypt codedef enc(addr, next_fd): return (addr >> 12) ^ next_fd
def ROR(data, shift, size=64): shift %= size body = data >> shift remains = (data > (size - shift) body = (data

솔버가 가장 많은 쉬운 문제였다. minecraft.c더보기#include #include #include #include __attribute__((constructor)) void flush_buf() { setbuf(stdin, NULL); setbuf(stdout, NULL); setbuf(stderr, NULL);}typedef struct { long uid; char username[8]; long keycard;} user_t;typedef struct { long mfg_date; char first[8]; char last[8];} nametag_t;long UID = 0x1;char filename[] = "flag.txt";user_t..

친구 권유로 해본 CTF. pwnable만 풀었다. 파일은 총 3개가 주어진다. 친절하게 docker-compose까지 준다. 이렇게 도커를 올린 다음에 도커 안에서 libc와 ld를 빼오자. 해당 경로에서 두개 다 빼오면 된다. 그리고 바이너리 파일에 libc와 ld를 연결해주자. 이제 바이너리 분석을 해보자.보호기법이 카나리 빼고 다 걸려있다. main 함수인데 되게 심플하게 생겼다. main에서 호출되는 game 함수다. game에서 호출되는 play함수다.read로 BOF가 발생한다. 함수 중에 nothing과 yap이 존재하는데, nothing은 아무것도 없는 함수다. 아마 가젯때문에 넣은 듯 싶다.(이걸로 pie base 구하면 될 듯?) yap 함수는 play함수의 주소를 출력해준다. 하지..