전체 글 31

[프로토스타] stack5-2 (return to library)

stack5.c #include #include #include #include int main(int argc, char **argv) { char buffer[64]; gets(buffer); } 출처: http://liveoverflow.com/binary_hacking/protostar/stack5.html 1. 문제 해결 / 분석 1-1. lib32z1 다운로드 32bit 환경에서 해야한다. file stack5를 통해서 몇 비트 파일인지 알 수 있다. 1-2. gdb ./stack5 disas main b *main r 1-3. R2L bufferebpret -> system lib로 실행하게 하면 된다. 그러나ret (system 주소로 가는 ret)argument (쉘 코드가 들어가는 영역..

프로토스타 2019.01.15

[프로토스타] stack5-1 (스택 접근)

stack5.c #include #include #include #include int main(int argc, char **argv) { char buffer[64]; gets(buffer); } 1. 해결 1-1. stack5.c 저장 및 aslr 제거 aslr 제거 echo 0 | sudo tee /proc/sys/kernel/randomize_va_space가변적 스택을 고정하기 위함.고정하지 않으면 shell code의 위치가 변하므로 고정해주어야 한다. 출처: https://askubuntu.com/questions/318315/how-can-i-temporarily-disable-aslr-address-space-layout-randomization 1-2. msfvenom 사용 msfve..

프로토스타 2019.01.10

[프로토스타] stack4

stack4.c #include #include #include #include void win() { printf("code flow successfully changed\n"); } int main(int argc, char **argv) { char buffer[64]; gets(buffer); } 출처: http://liveoverflow.com/binary_hacking/protostar/stack4.html 1. 해결 및 분석 1-1. stack4.c 저장 및 컴파일 gcc -z execstack -w -no-pie -o stack4 stack4.c 1-2. gdb ./stack4 disas main retrun으로 갈 때에 win()함수로 가게 값을 변경해 주어야하기 때문에 b *main+3..

프로토스타 2019.01.09