본문 바로가기

Hacking & Security/Exploit

(5)
diff 32bit vs 64bit diff 32bit vs 64bit General BOF EBP-8에 할당되어 있는 변수를 오버플로우 한다고 가정하였을때, EBP에는 SFP가 존재하고, EBP+4에는 RET이 존재한다. 32bit system에서는 SFP가 4byte크기를 갖기 때문에 RET 변조를 위해서는 최소 스택 + 4 byte의 더미를 주고 RET에 접근한다. 하지만 64bit system의 경우에는 4byte 주소를 사용하던 32bit와는 달리 8byte 주소를 사용한다. 따라서, SFP가 8byte이므로 스택 + 8byte만큼의 더미를 주어야 한다. RTL and ROP 이에 대해 학습하기 이전에는 Calling Convention에 대한 이해가 필요하다. 콜링 컨벤션은 크게 3가지 존재하며 여기서 주목할 것은 cdecl 과..
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 기초문서 입니다. ( 저작권에 문제될 시 바로 삭제하도록 하겠습니다. )