System hacking/프로토스타(Protostar)

Protostar Stack5[RTL이용하여 문제 풀이]

Roronoa 2022. 9. 22. 04:22
반응형

Protostar Stack5 RTL 기법을 이용하여 문제풀이

 

https://exploit.education/protostar/stack-five/

 

Stack Five :: Andrew Griffiths' Exploit Education

Stack Five Stack5 is a standard buffer overflow, this time introducing shellcode. This level is at /opt/protostar/bin/stack5 Hints At this point in time, it might be easier to use someone elses shellcodeIf debugging the shellcode, use \xcc (int3) to stop t

exploit.education

위 사이트에 접속을 하면 Stack Five문제의 소스코드를 볼 수 있다.

문제 설명

[그림 1] 문제 설명

Source Code

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
  char buffer[64];

  gets(buffer);
}

RTL 기법을 이용하여 쉘코드를 실행하도록 하겠다.

 

아래 블로그에 가면 RTL기법에 대해 자세히 설명이 되어있다.

https://lactea.kr/entry/bof-Return-to-Libc-RTL-%EA%B3%B5%EA%B2%A9-%EA%B8%B0%EB%B2%95

 

[bof] - Return to Libc (RTL) 공격 기법

0x01 What is it? RTL 공격은 스택에 NX-bit 보안 기법이 적용 되었을때 사용하는 공격 기법이다. NX란 Never eXecutable stack 을 줄인 말로 "스택에서 코드 실행 불가" 라는 보안 역할을 한다. NX-bit 때문에 스..

lactea.kr

 

[그림 2] system 함수 위치 확인

Stack5를 디버깅한 후 system의 주소를 확인하였다.

print의 주소는 0x00007ffff7c4a4e0이다.

 

 

[그림 3] bin/sh 위치 확인

find를 이용하여 메모리상의 있는 스트링들을 찾을 수 있다.

'bin/sh'의 위치를 찾아보니 0x7ffff7db1117에 있는것을 확인할 수 있다.

 

이걸따라서 poc코드를 작성해보았지만 64비트 운영체제라 쉘코드가 실행되지 않는다.

(POC 코드란 취약점을 이용한 공격이 가능함을 보여주는 시현 소스코드이다.)

아래 블로그에서 32비트인 파일을 다운받은 뒤 실습을 진행하겠다.

https://kkomii22.tistory.com/73

 

시스템 해킹을 위한 RTL(Return to Library) 기법

해당 기법은 Protostar - Stack.5 문제를 기반으로 작성했다. 기법을 실습하기 위해 관련 Protostar 이미지 파일이 필요하다. 해당 파일은 바이러스, 악성코드 파일이 아님을 밝힌다. Protostar 워게임 문제

kkomii22.tistory.com

 

[그림 4] 32비트 stack5 디버깅

ret 함수가 버퍼에서 얼만큼 떨어져 있는지 확인해보도록 하겠다.

확인을 해보니 76바이트 만큼 떨어져있다.

[그림 5] ret 위치
[그림 6] system위치와 bin/sh 위치

system과 bin/sh 위치를 찾았고 poc코드를 작성하도록 하겠다.

 

[그림 7] poc 코드 작성

먼저 76만큼 쓰레기 값으로 덮어서 ret위치까지 갔고 system함수를 ret에 덮어씌웠다.

dummy는 원래 system함수가 실행된 후 다음에 실행할 위치를 저장하는데 우리는 쉘을 띄우는것이 목적이기 때문에 아무값으로 설정해도 상관없다. 그리고 쉘의 주소를 넣어 system함수가 쉘을 실행한다.

 

[그림 8] poc코드 실행

쉘코드를 실행하여 익스플로잇에 성공을 하였다.

반응형

'System hacking > 프로토스타(Protostar)' 카테고리의 다른 글

Protostar Stack7  (0) 2022.09.25
Protostar Stack6[RTL]  (2) 2022.09.23
Protostar Stack5 문제  (1) 2022.09.21
Protostar Stack4 문제  (0) 2022.09.17
Protostar Stack3 문제  (0) 2022.09.16