본문 바로가기

rtl

64bit 버퍼오버플로우(Buffer Overflow) /* written by kaspy (kaspyx@gmail.com)*/ 버퍼 오버플로우 공격기법이 등장한지도 꽤오래되었지만 64비트에서 공략하는 문서는 그리 많지않아서 정리하게되었다. 그냥... 64비트는 그환경특성상 exploit 하기 여러모로 굉장히 더어려워졌다. 1. 쉘코드 우선은 간단한거부터 말하자면 (당연한거지만) 64비트 리눅스 ELF 바이너리에서는 64비트 쉘코드를 써야한다는것이다. 32비트 같은 경우에는 eax 레지스터에 0xb를 넣고 ebx에 "/bin/sh"의 문자열의 주소, ecx,edx에는 0을 넣은뒤 int 0x80 어셈블리를 실행하면 쉘이 쉘이 떴다. 그러나 64비트에서는 syscall 이라는 어셈블리를 사용하고 rdi에 0x3b를 넣고, rsi와 rdx에 0을 넣은뒤 호출해야.. 더보기
Buffer Overflow - RTL(Return to library) 기법 /* written by kaspy (kaspyx@gmail.com)*/ 1. 서론 RTL(Return to library) 기법이란, 버퍼오버플로우(Buffer Overflow, 이하 BOF) 취약점이 존재하는 프로그램을 익스플로잇 할때 해당 프로그램의 스택(stack) 영역에 실행 권한이 존재하지 않을때 프로그램이 사용하는 glibc 내에 존재하는 함수를 호출하는 기법이다. 요즘 대부분의 리눅스 및 윈도우 시스템은 NX 또는 DEP등으로 스택(stack) 영역에 실행 권한을 주고있지않고, 특별한 컴파일 옵션을 주어서만 실행권한을 줄수있는만큼 간단하면서도 자주 사용되는 방법이다. 포너블문제(pwnable)에서는 기본중에 기본이니 잘알아두도록하자. * 테스트 환경은 우분투 리눅스 16.04 64bit 입.. 더보기