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문제의 소스코드를 볼 수 있다.
문제 설명
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
Stack5를 디버깅한 후 system의 주소를 확인하였다.
print의 주소는 0x00007ffff7c4a4e0이다.
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
ret 함수가 버퍼에서 얼만큼 떨어져 있는지 확인해보도록 하겠다.
확인을 해보니 76바이트 만큼 떨어져있다.
system과 bin/sh 위치를 찾았고 poc코드를 작성하도록 하겠다.
먼저 76만큼 쓰레기 값으로 덮어서 ret위치까지 갔고 system함수를 ret에 덮어씌웠다.
dummy는 원래 system함수가 실행된 후 다음에 실행할 위치를 저장하는데 우리는 쉘을 띄우는것이 목적이기 때문에 아무값으로 설정해도 상관없다. 그리고 쉘의 주소를 넣어 system함수가 쉘을 실행한다.
쉘코드를 실행하여 익스플로잇에 성공을 하였다.
'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 |