본문 바로가기

[Exploit-Exercises | protostar] Stack 7 :: ROP를 이용한 Buffer Overflow Stack 7의 소스코드는 다음과 같습니다. 1234567891011121314151617181920212223242526272829#include #include #include #include char *getpath(){ char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xb0000000) == 0xb0000000) { printf("bzzzt (%p)\n", ret); _exit(1); } printf("got path %s\n", buffer); return strdup(buffer);} int.. 더보기
[Exploit-Exercises | protostar] Stack 6 :: RTL & ROP Stack 6의 소스코드는 다음과 같습니다. 12345678910111213141516171819202122232425262728#include #include #include #include void getpath(){ char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); // Vurnerability!!! ret = __builtin_return_address(0); if((ret & 0xbf000000) == 0xbf000000) { printf("bzzzt (%p)\n", ret); _exit(1); } printf("got path %s\n", buffer);} int main(.. 더보기
[Exploit-Exercises | protostar] Stack 5 :: RET 조작을 통한 Shellcode 실행 Stack 5의 소스코드는 다음과 같습니다. 1234567891011#include #include #include #include int main(int argc, char **argv){ char buffer[64]; gets(buffer); // Vurnerability!!!}cs Stack 0 ~ Stack 4까지의 문제들은 변수에 특정 값을 집어 넣거나 특정 함수를 호출하는 문제였는데 이번 문제는 깔끔하게 buffer 변수와 gets() 함수만 존재합니다. 따라서 RET 영역을 조작하여 Setuid가 설정된 파일의 Owner의 권한으로 상승시키는 Shellcode를 실행시키도록 하겠습니다. /opt/protostar/bin/stack5의 Owner가 root임으로 root로 권한이 상승되겠네요... 더보기