본문 바로가기

overwriting

(5)
Return To Libc ( RTL ) RTL ( Return To Libc ) RTL : - RTL 이란 , 공유 라이브러리의 주소로 Return address 를 조작하는 기법이다. - Return Address 영역을 공유 라이브러리 함수의 주소로 조작하여 , 해당 함수를 호출하는 기법이다. - 해당 기법을 이용하여 NX bit ( DEP ) 메모리 보호기법을 우회할 수 있다. - 공격방식은 Buf + SFP + system + dummy(exit) + /bin/sh로 RET를 원하는 함수로 덮어 실행한다. NX bit ( MS : DEP ) : NX (Never eXecute bit, 실행 방지 비트 ) 란 , - 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. NX bit를 적용함으로써..
Return to Shellcode Return to Shellcode - Return to Shellcode 란 , 이름 그대로 프레임의 Return address 영역을 Shellcode가 위치한 주소로 변경시켜 프로그램의 흐름을 의도적으로 조작하여 shellcode를 호출하는 방식이다. Return to Shellcode 이해하기 - Return to Shellcode를 이해하기 위해서는 Assembly Instruction 중 CALL 과 RET에 대한 이해가 요구된다. CALL Instruction : Return Address ( CALL 명령어 다음으로 실행할 명령어의 위치 ( 주소 ) ) 를 Stack에 저장후 , 피연산자의 주소로 이동 RET Instruction : POP Instruction을 통하여 ESP 레지스터가 ..
Basic of pwnable Shellcode - shellcode란 , 명령 shell을 실행시켜 공격자가 해당 시스템을 제어하는 코드다. - machine code로 작성된 작은 크기의 프로그램으로 일반적으로 어셈블리어로 작성후 기계어로 변경된다. Shellcode를 개발하기 위해서는 다음과 같은 지식을 필요로 한다.- 우리가 주로 사용하는 많은 프로그램들은 대부분 C언어와 같은 High-level의 언어를 컴파일 과정에 의해 Assembly , Machine Language 등과 같은 저수준 언어로 변경된 파일이다. (C code는 해당 시스템에 맞는 Assembly Code로 변환 -> 변환된 Assembly code를 Machine code로 표현 ) - 위와 같은 방식으로 Machine code는 메모리에 로드되어 코드를..
BOF 기초문서 와우해커팀 소속 달고나님이 작성하신 Buffer OverFlow 기초문서 입니다. ( 저작권에 문제될 시 바로 삭제하도록 하겠습니다. )
PLT & GOT PLT ( procedure Linkage Table ) - 외부 프로시저를 연결해주는 테이블- PLT를 통해 다른 라이브러리에 있는 프로시저를 호출하여 사용할 수 있다. GOT ( Global Offset Table )- PLT가 참조하는 테이블- 프로시저들의 주소가 들어있다. 전반적인 PLT와 GOT의 흐름은 다음과 같이 정리된다. 함수 호출 ( PLT 호출 ) -> 함수의 실제 주소가 쓰여져있는 GOT로 점프 -> GOT 참조 -> 해당 함수로 점프 만일 , 첫 호출이라면 GOT는 함수의 주소를 가지고 있지 않고 일련의 과정을 통하여 주소를 알아낸다. 호출이 두번이상 반복되면 첫 호출때 알아낸 주소로 바로 점프한다. 이렇게 참조하는 과정에서 주소를 변조하여 우리는 프로그램의 흐름을 변경시킬수 있다...