목록* (243)
CIDY
보호되어 있는 글입니다.

#include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i

// 32-bit, partial relro, nx #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc

// 32-bit, partial relro, canary, nx, pie #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } 키값을 맞추면 쉘을 내주는 간단한 구조다. gets로 입력을 받으므로 오버플로우도 충분히 일으킬 수 있다. 그리고 카나리가 걸려있지만 그 전에 쉘이 실행되면 그만이므로 그..
보호되어 있는 글입니다.
top chunk의 사이즈를 조작해 임의 주소에 청크를 할당하는 공격 기법이다. static void * _int_malloc (mstate av, size_t bytes) { INTERNAL_SIZE_T nb; /* normalized request size */ ... mchunkptr remainder; /* remainder from a split */ unsigned long remainder_size; /* its size */ ... use_top: victim = av->top; size = chunksize (victim); if ((unsigned long) (size) >= (unsigned long) (nb + MINSIZE)) { remainder_size = size - nb; ..
heap allocator 관련 문제들이 흥미로운 게 많은 것 같아 더 공부해 보기로 했다. *Tcache House of Spirit 이전에 풀었던 문제 중에도 있는데, free함수로 임의의 청크를 해제할 수 있을때 사용하는 기법이다. https://orcinus-orca.tistory.com/145 [System_Hacking] Lv.4: 문제풀이(house_of_spirit) // gcc -o hos hos.c -fno-stack-protector -no-pie // 64-bit, partial relro, nx #include #include #include #include #include char *ptr[10]; void alarm_handler() { exit(-1); } void initi..

// Name: bypass_syscall.c // Compile: gcc -o bypass_syscall bypass_syscall.c -lseccomp #include #include #include #include #include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void sandbox() { scmp_filter_ctx ctx; ctx = seccomp_init(SCMP_ACT_ALLOW); if (ctx == NULL) { exit(0); } seccomp_rule_add(ctx, SCMP_ACT_KILL, SCMP_SYS(open), 0); seccomp_rul..