Buffer Overflow15 ELF x86 - Stack buffer overflow basic 3 ELFx86 BOF 문제이다. GOT Overwrite 가능하고 실행 권한이 없다. 소스 코드 #include #include #include #include #include void shell(void); int main() { char buffer[64]; int check; int i = 0; int count = 0; printf("Enter your name: "); fflush(stdout); while(1) { if(count >= 64) printf("Oh no...Sorry !\n"); if(check == 0xbffffabc) shell(); else { read(fileno(stdin),&i,1); switch(i) { case '\n': printf("\a"); break; case.. 2021. 3. 28. ELF x64 - Stack buffer overflow - basic 64bit BOF 문제이다. Mitigation은 Full RELRO NX enabled ASLR ON이다. GOT Overwrite는 불가능 하다. 소스 코드를 보면 256 바이트 만큼 선언되어있고 scanf로부터 입력을 받는데 길이에 대한 검증이 없어서 여기서 BOF가 일어난다. 일반적인 BOF이기 때문에 리턴 주소를 callMeMaybe로 조작하면 된다. 64bit는 32bit와 다르게 8 바이트기 때문이에 이점을 유의하자. buffer의 길이는 rbp - 0x110 = 272이다. payload는 dummy(272) + sfp(8) + ret으로 구성하면 된다. callMeMaybe의 주소이다. exploit from pwn import * user = 'app-systeme-ch35' host .. 2021. 3. 28. ELF x86 - Stack buffer overflow basic 1 이번 문제는 root-me.org 의 system 첫 문제인 stack-buffer-overflow이다. 이 사이트는 기술을 익히기에 좋은 워게임 사이트인거 같다. 접속 정보를 제공한다. 접속을 해서 보면 Mitigation 상태를 보여주고 파일들이 보이는데 소스 코드를 제공한다. 소스 코드는 문제 사이트에도 있다. check가 0xdeadbeef면 쉘을 획득할 수 있다. buf의 시작주소 부터 check까지의 거리는 0x28이다. 이제 check를 0xdeadbeef도 덮어보자. from pwn import * user = 'app-systeme-ch13' host = 'challenge02.root-me.org' port = 2222 password = 'app-systeme-ch13' s = ssh.. 2021. 3. 27. [Toddler's Bottle] - bof 이번 문제는 bof문제이다. 위의 주소로 파일을 다운받고 문제를 확인해 보자. 문제를 실행시켜보면 overflow me가 출력됨가 동시에 입력을 받을 수 있는데 입력을 받으니 Nah..를 출력한다. 소스 코드가 같이 제공되니 소스 코드를 확인해보자. 소스 코드를 보면 func함수의 인자로 0xdeadbeef를 넘겨주고 overflowme가 32바이트로 할당되어있다. 계속해서 코드를 살펴보면 gets함수에서 overflowme의 입력을 받는데 여기서 Buffer Overflow 취약점이 일어난다. bof 취약점을 이용해서 key 값을 0xcafebabe로 덮어주면 쉘을 획득할 수 있다!! gdb로 분석해보면 overflowme의 시작 위치에서 부터 0xdeadbeef까지의 거리는 0x34이다 0xdeadb.. 2021. 3. 26. 이전 1 2 3 4 다음