목록System (72)
y0u_bat
[how2heap] House of Spirit #include #include int main(int argc, char *argv[]){ void *a = malloc (32); char buf[8]; read(0,buf,0x100); free(a); malloc(32); return 0;} 간단하게 설명하면, overflow를 통해서 a 포인터 값을 조작해서 "원하는 주소"의 free를 시키고, 다시 할당할때 "원하는 주소"를 할당하는 기술이다.buf에 fake chunk 청크를 만들고, a 포인터를 buf 주소로 덮어버리면 free(buf)가 된다.free할때 glibc 부분을 보면, free하는 청크의 뒤에 청크의 크기를 검사한다. chunk_at_offset(p,size)->size = av..
보호되어 있는 글입니다.
Double Free Bug Vulnerability이문서에서는 double free bug 취약점에 대해서 간단하게 설명하고 있습니다.공부하면서 작성하는것이기 때문에, 오류가 있을수 있음을 양해 바랍니다. malloc_chunkprevious_sizeindex_size (P)using_data_space free_chunkprevious_sizeindex_sizefdbk index_size에서 P는 PREV_INUSE라고 불리며, 이것으로 chunk가 allocated 되어 있는지, 사용 안하고 있는지 나타냅니다. 1일경우 사용중, 0일경우 사용하지 않음을 알려줍니다. 여기서 0일때 free를 하면 unlink를 호출하여 병합 하게 됩니다.Double free bug는 free에서 unlink를 호출하..
[Pwnable.kr] flag - 7pt 풀이 hex-view로 보고 upx로 패킹된걸 알게되었다. upx 언패킹 요로케 해주고 언패킹한 파일을 아이다로 열어서 그래픽뷰를 한번 보면,바로 flag가 보이네여, 더블클릭 하면, 플래그가 나온당
how2heap fastbindupinto_stack.c #include #include #include int main(void) { int *a = malloc(8); int *b = malloc(8); int *c = malloc(8); unsigned long long stack_var; printf("malloc() return address %p\n", 8+(char *)&stack_var); printf("[a] : %p\n",a); printf("[b] : %p\n",b); printf("[c] : %p\n",c); free(a); free(b); // free list의 맨위쪽에 위치하기 때문에 크래쉬가 터진다. free(a); // free list의 맨위쪽에 위치하지 않기 때문에, f..
how2heap first_fit.c #include #include #include int main(void) { char *a = malloc(512); char *b = malloc(256); char *c; strcpy(a,"this A"); printf("[a]: %s %p\n",a,a); free(a); c = malloc(500); printf("[c]: %p\n",c); strcpy(c,"this C"); printf("[c]: %s %p\n",c,c); printf("[a]: %s %p\n",a,a); } 간단하게 설명하자면, malloc 같은경우 bin이라는 구조가 있고, 크기에 따라 large bin, small bin fastbin으로 나누어지고, fastbin 같은 경우, free..
fastbin fd control 먼저 청크 구조부터 설명하면, ---------------------------- size of previous chunk ---------------------------- size of chunk | M | P | | ---------------------------- using_data ---------------------------- Free Chunk ----------------------------------- size of previous chunk ----------------------------------- forward pointer to next chunk ----------------------------------- back pointer t..
QEMU로 ubuntu 환경에서 mips를 에뮬레이팅 하였다.sudo apt-get install qemu-system-mipshttps://people.debian.org/~aurel32/qemu/ 에서 커널과 이미지를 받을 수 있다. 다운받은 뒤, "qemu-system-mips -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debianwheezymipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -redir tcp:4444::22 -nographic" qemu를 실행시킨 운영체제 4444포트를 22포트로 포워딩 준다.완료되면, root/root로 로그인한뒤, apt-get update부터 해야 된다. 그다..
보호되어 있는 글입니다.
방정식나오는 문제200개 방정식의 해를 구하면 된다. 풀이