글
버퍼오버플로우 01 - 해쿨 핸드북
{리눅스 명령어}
파일 목록 보기 : ls –al
디렉토리 이동 : cd [디렉토리명]
상위 디렉토리로 이동 : cd ..
현재 디렉토리명 확인 : pwd
파일 내용 확인하기 : cat [파일명]
파일 내용 편집하기 : vi [파일명]
입력모드 - i
명령모드 - esc
저장 - esc입력 후 :w
종료 - esc 입력 후 :q
소스 코드 컴파일하기 : gcc -o [프로그램명] [소스코드명]
프로그램 실행하기 : ./[프로그램명]
프로그램에 인자 전달하기 : ./[프로그램명] [인자1] [인자2] ...
현재 자신의 권한 확인하기 : whoami 혹은 id
IP 확인하기 : /sbin/ifconfig IP 변경하기 : /usr/sbin/netconfig (root 권한 필요)
지금까지 입력한 명령목록 보기 : history
실행중인 프로그램(프로세스) 목록 보기 : ps -aux
시스템 리부팅 : reboot (root 권한 필요)
시스템 종료 : halt (root 권한 필요)
관리자 권한으로 명령 실행 : sudo [명령어]
1. 버퍼란? 어 어떤 데이터가 한 곳에서 다른 곳으로 이동할 때, 그 데이터가 일시적으로 보관되는 임시 기억 공간
ex) 예를 들어 한 프로그램 내에서 데이터가 이동할 때,
한 프로그램에서 다른 프로그램으로 데이터가 이동할 때,
한 프로그램에서 하드웨어(예를 들면 프린터)로 데이터가 이동할 때,
한 네트워크에서 다른 네트워크로 데이터가 이동할 때, 등등..
버퍼는 그 중간에서 데이터를 받거나 건네주는 역할을 한다
C언어에서는 변수가 버퍼로서 사용된다.
버퍼오버플로우?(Overflow)
over = 과하다, 지나치다
flow = 넘치다
overflow = 과해서 넘쳐버리다
2. 프로그램을 공격한다?
프로그램은 어떻게 구현되었느냐에 따라 항상 똑같은 순서로 실행될 수도 있고 사용자의 입력에 따라 결과나 실행 흐름이 달라질 수도 있다.
버퍼오버플로우 공격의 대상이 되는 프로그램의 특징
사용자로부터 어떠한 입력을 받으며 그 입력 값에 따라 프로그램의 실행 결과가 달라진다.
정상적인 값을 입력 받은 프로그램은 정상적인 결과를 보여준다
비정상적인 것은? 비정상적으로 긴 문자열을 입력하는 것 ===> Segementation fault 에러
제한된 버퍼 영역을 벗어나면 다른 애꿎은 메모리 영역을 침범하면서 프로그램 에 문제를 일으킬 수 있으며
이 특성을 이용하면 패스워드 인증을 통과한다든지, 더 높은 권한을 획득한다든지
또다른 PC로의 접근 권한을 획득할 수 있다.
char 1바이트
short int 2바이트
int 4바이트
long int 4바이트
char형은 1바이트고 이는 8비트와 같으며, 2진수 모드에서 8비트를 표현할 수 있는 최대 값은 11111111이다. == 255
근데, 실제로 char형 변수가 사용할 수 있는 최대값은 1111111(7비트)
왜냐하면 맨 앞의 첫 비트는 현재 값이 양수인지 음수인지를 나타내는 부호비트이기때문 ==127
하지만 양수만 사용하는 경우(거리문제) 8비트 사용할 수 있다. (0~255)
변수를 버퍼로 사용하려면?
입력 받은 데이터를 변수에 저장하고, 출력하거나 다른 곳으로 보내는 용도로 사용하면 변수는 버퍼가 된다.
버퍼는 개념적인 용어기 때문에 데이터를 다른 한 곳에서 다른 곳으로 이동시키기 위한 임시 공간이라는 의미에 부합되면 무엇이든지 버퍼가 될 수 있다.
●하나의 변수에 해당하는 정보는 총 세개로 구성된다
1. 변수에 저장된 값에 해당하는 정보들
2. 변수의 할당 크기 ;(sizeof)함수
3.변수가 위치하고 있는 메모리 주소 ; 변수가 실제 메모리상에 위치하고 있는 주소값 C언어의 & 연산자를 이용하면 알 수 있다. [printf(“i의 메모리 주소 : 0x%x\n”, &i);]
*참고 : i의 메모리 주소인 0xbfffe784는 사용자의 OS 환경에 따라 달라질 수 있다.
'포너블' 카테고리의 다른 글
| Pwnable study 1주차[함수 프롤로그 & 에필로그] (0) | 2020.01.30 |
|---|---|
| 버퍼오버플로우 05- 해쿨핸드북 (0) | 2020.01.01 |
| 버퍼오버플로우 04- 해쿨핸드북 (0) | 2020.01.01 |
| 버퍼오버플로우 03 - 해쿨 핸드북 (0) | 2020.01.01 |
| 버퍼오버플로우 02 - 해쿨 핸드북 (0) | 2020.01.01 |