REX(rex@rex.sex)님이 쓰신 BCTF bcloud exploit을 통해 Heap exploit중 House of force에 관하여 공부해봤다.+ 개인적인 공부를 위하여 작성된 글입니다. 오타지적이나 어느 부분의 내용이 참 쓰레기 같다 하시면 댓글로 남기거나 욕을 해주세요.+ 이해가 안되는 부분은 (제 필력이 유감스럽기 때문에) References에 자세하게 설명되어 있습니다. 내가 지금까지 알던 Heap exploit은 linked list 객체의 BK(backward), FD(Forward)를 조작하여 GOT를 덮고 쉘코드나 System@libc를 실행시키는 것이 전부였다.(아마도 DEFCON baby first heap문제가 비슷한 문제였던것 같다. http://v0ids3curity.b..
참고한 문서 SROP.pdf 이 포스팅은 위 문서를 기반으로 작성되었습니다. 똑같진 않지만 어느정도 기반으로 exploit이 진행되었기 때문에문제가 된다면 삭제하겠습니다. * 개인 공부용이기 때문에 문서를 보는것이 훨씬 낫습니다. ---------------------------------------- 12345678910111213141516// vuln.c// gcc -o vuln vuln.c -fno-stack-protector -fno-pie -mpreferred-stack-boundary=2 char binsh[] = "/bin/sh\x00"; void int80() // int 0x80 ; gadget{ asm("int $0x80");} void main(void){ char buf[8]; r..
Pwnable에는 많은 기법이 있는데, 그중에서 자주 쓰이는 기법들 중 Int Overflow라는 것이 있다.그대로 말하면 정수타입에서 일어나는 Overflow취약점이다. 가령 아래와 같은 코드가 있다. (shell-storm.org에서 받을 수 있음) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211..
mprotect()의 원형 int mprotect(void *addr, size_t len, int prot); 원래 일반적인 ROP기법을 써서 system() 함수를 실행시키는 방법을 주로사용했었다. 그런데 NX-Bit가 걸려있어도 mprotect() 함수를 실행시켜서 Shellcode를 실행시킬 수 있다고 한다. mprotect()함수는 주어진 메모리 영역의 권한을 바꿀 수 있도록 해준다.그렇기 때문에 prot 인자에 7을 주게 되면 RWX권한이 모두 들어가게 된다. + 또한 주의할 점은 void *addr 부분이 0x1000의 배수가 되어야 한다고 한다.+ 사용한 Binary는 예전에 포스팅 했었던 PlaidCTF rop... 이다.http://err0rless313.tistory.com/entry..
나중을 대비하여.. Bypass Nx-Bit and ASCII-Armor 부분을 파이썬을 이용하여 짜봤음. Fedora Core-13, ASLR은 꺼져있는 상태임. system -> 0x67bbf0 strcpy -> 0x8048358 -> \x58\x83\x04\x08 puts -> 0x08048388 -> \x88\x83\x04\x08 GOT_puts -> 0x8049748 -> \x48\x97\x04\x08 pop2ret -> 0x08048568 -> \x68\x85\x04\x08 0xf0 -> 0x80486ec -> \xec\x86\x04\x08 0xbb -> 0x8048753 -> \x53\x87\x04\x08 0x67 -> 0x8048754 -> \x54\x87\x04\x08 0x00 -> 0x..
NX-Bit와 ASCII-Armor 우회하기 ( ROP기법 초급 ) 환경 : Fedora Core - 13 원래 Full-ASLR 기법이 적용되어 있지만 사용안함 설정 해놨음. [root@localhost bypass-NX_and_ASCII]# echo 0 > /proc/sys/kernel/randomize_va_space[root@localhost bypass-NX_and_ASCII]# cat /proc/sys/kernel/randomize_va_space0 취약점이 있는 코드 // gcc -o vuln vuln.c -fno-stack-protector -fno-pie -mpreferred-stack-boundary=2// 코드가 약간 억지스럽지만 단순히 실습용이기 때문에 상관없음 #include #i..
FSB로 GOT OVERWRITE하기 실습환경 ->LOCAL FTZ( RED HAT9 ) ---------------------------------------------------------------- [guest@ftz sys]$ whoami guest -> 나의 게정은 guest이다. [guest@ftz sys]$ ll total 32 -rwsr-xr-x 1 root root 11675 Aug 6 08:10 fsb_got //root의 setuid가 걸려있음 -rw-r--r-- 1 root root 179 Aug 6 08:19 fsb_got.c [guest@ftz sys]$ cat fsb_got.c #include #include int main( int argc, char **argv ) { c..
printf_got.c #include int main( void ) { printf( "cat ~/system_hack_test/got_test.txt" ); return 0; } 이 코드를 통해 /root/system_hack_test/got_test.txt를 출력해야함. 여기서 printf가 system함수가 되면 출력할 수 있음. root@Kali:~/system_hack_test# pwd /root/system_hack_test root@Kali:~/system_hack_test# ls -l 합계 28 -rwxrwxrwx 1 root root 5204 9월 6 14:54 got_test -rw-r--r-- 1 root root 300 9월 6 14:54 got_test.c -rw-r--r-- 1..