저번 포스팅에 이어서 이번에는 Basic Program Excution Register (BPER) 을 조금 더 심화적으로 알아보도록 할겁니다.
1. Basic Purpose Register - 범용레지스터 (32 bit, 8개)
- 산술연산 (ADD, SUB, XOR , OR 등) 명령어에서 상수 / 변수의 값을 저장하는 용도로 사용
1-2. 종류
- EAX : Accumulator for operands and result datas -> 일반적으로 함수의 리턴값에 사용 - EBX : Pointer to data in the DS segment - ECX : Counter for String and Loop operations -> 반복문 명령어에서 반복 카운터로 사용 - EDX : I/O Pointer
지금현재 8개의 레지스터중 4개를 살펴보았습니다. (그럼 나머지 4개는?)
4개는 아래와 같으며 4개씩 따로 살펴보는 이유는 주로 연산과 관련된 레지스터와 메모리의 주소를 저장하는
포인터로 사용되는 레지스터이기 때문에 기능적인 부분에서 차이가 있습니다.
1-3. 종류
- EBP : Pointer to data on the stack (in the SS segment)
함수가 호출되었을때 ESP를 저장하고 있다가 함수가 리턴하기 직전에 ESP에 값을 되돌려줌
- ESI : Source Pointer for String operands
- EDI : Destination Pointer for String operands
- ESP : Stack Pointer (in the SS segment)
스택 메모리의 주소
2. Segment Register - 세그먼트 레지스터 (16 bit, 6개)
- 세그먼트라는 메모리의 한 영역의 주소를 지정하는 레지스터
- 세그먼트 : 프로그램에 정의된 코드나 데이터 및 특정 영역을 저장하는 곳
2-2. 종류
보시면 여러가지의 세그먼트 들이 존재합니다만, 처음에 중요하게 살펴봐야 할 세그먼트 레지스터는 DS 입니다.
먼저 종류들을 살펴보겠습니다.
CS - Code Segment 실행될 기계 명령어를 포함하는 영역
- EIP가 있기때문에 직접적으로 볼 일이 많이 없음
DS - Data Segment 프로그램의 정의된 데이터나 상수, 작업영역을 포함
- 레지스터에서 프로그램에 저장된 데이터나, 상수, 변수 등을 읽어올때 접근
SS - Stack Segment 스택 세그먼트
- 컴파일 과정에서 데이터가 스택에 쌓이게 되는데EBP / ESP가 있기때문에 볼 일이 많지 않음
The password for the next level is stored in /etc/bandit_pass/bandit14 and can only be read by user bandit14.
For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level. Note:localhost is a hostname that refers to the machine you are working on
대충 해석해보면 현재레벨에서는 접근이 불가하니 ssh로 접속하여 해당 디렉토리( /etc/bandit_pass/bandit14 경로로 이동한 후 패스워드를 획득하라는 내용이다. 일단 로그인을 한번 해보았다.
뭔가 엄청나게 많은 문자가 보이는데 찾아봐야 할 것들이 RSA Private key와 sshkey.private인데 확인을 해보기로 했다.
SSH : 텔넷(Telnet)과 용도는 같지만, 보안이 강화된 원격 접속 서비스이다.
- SSH를 이용하여 원격 접속하면 서버와 클라이언트 사이에 데이터를 전송할 때 암호화를 하게 된다.