반응형

exploit-exercises 문제풀이 / Nebula Level03

 

ID/PW : level03 / level03

문제 : flag03 권한으로 getflag 실행을 시켜야 합니다.

 

/home/flag03에 들어가 보면 writable.d 디렉토리랑 writable.sh 파일이 있습니다. 

writable.sh 내용을 보면 /home/flag03/writable.d/ 디렉토리에 있는 스크립트 파일을 bash -x로 실행시킵니다.

/home/flag03/writable.d/ 디렉토리에 test.sh 파일을 만들어 실행하도록 하였습니다. 

test.sh 파일 안에는 getflag를 실행하도록 하였고, 그에 대한 결과는 /tmp/test.txt에 출력하도록 하였습니다.

이제 writable.sh를 실행해보겠습니다.

그럼 /tmp/test.txt 파일이 생겼고, 이 파일을 보면 getflag를 실행한 것으로 볼 수 있습니다.

반응형
반응형

exploit-exercises 문제풀이 / Nebula Level02

 

ID/PW : level02 / level02 

문제 : flag02 권한으로 getflag를 실행시켜야 합니다. 

 

 

아래 코드를 보시면, 

level1.c와 유사한 것을 볼 수 있고,

마지막에 buffer에 있는 내용을 system 함수를 호출하고 있습니다. 

 

/bin/echo라는 명령어가 지정되어 있기 때문에, %s 값인 getenv("USER") 값에 flag01 권한으로 bash가 실행되도록 하면 될 듯 합니다. 

$USER의 값을 보면 level02가 출력됩니다. 

$USER의 값을 바꾸어 보겠습니다. 

USER 값에 "abc;/bin/bash;"를 넣었습니다. 

따옴표를 넣지 않으면 USER에는 abc만 들어가고 /bin/bash가 실행될 것입니다. 

이제 flag02를 실행해봅니다. 

그러면 flag02 권한을 획득했고, getflag를 실행시킬 수 있습니다.

반응형
반응형

exploit-exercises 문제풀이 / Nebula Level01

 

이 레벨의 파일은 /home/flag01에서 찾을 수 있다고 합니다. 

flag01의 권한을 획득한 이후 getflag를 시키면 됩니다. 

 

 

우선 /home/flag01로 들어갑니다. 

./flag01을 실행하면 "and now what?"을 실행하고, 종료됩니다. 

이때 getflag를 해도 flag01의 권한이 없어 실패를 출력합니다. 

아래 코드에서는 /usr/bin/env라는 명령과 echo and now waht? 이라는 명령이 사용됩니다. 

echo 명령어에 flag01의 bash를 생성하도록 하여 권한을 획득해 보겠습니다.  

echo 명령어는 /bin/echo에만 있습니다. 

 

echo라는 명령어를 /home/level01에도 만들고, $PATH에도 추가하도록 하겠습니다. 

그리고 ./flag01을 다시 실행해 보겠습니다.

./flag01을 실행시키기 전에 echo에 실행권한을 주어야 합니다. 

그리고 ./flag01을 실행시키면 /home/level01에 있는 echo를 실행시키면서 flag01의 권한으로 bash가 실행됩니다. 

여기서 getflag를 하면 해당 문제가 해결됩니다.

반응형
반응형

overthewire.org 문제 풀이 / Leviathan Level 1 → Level 2

 

Host: leviathan.labs.overthewire.org
Port: 2223

ID : leviathan1

PW => 이전 레벨 문제 확인하시면 됩니다. 

 

leviathan1에 접속해서 ls 명령어를 입력하면 check라는 파일이 있습니다. 

이 파일은 setuid가 걸려있고, leviathan2의 권한을 가지고 있습니다. 

이 파일을 실행해 보도록 하겠습니다.

암호를 입력하는 프로그램입니다. 

암호를 알아야 하는데, ltrace라는 명령어를 이용해 실행과정을 추적해 보겠습니다.

password를 abc로 입력했는데, strcmp 함수에서 실제 password와 비교하고 있습니다. 

이제 실제 password를 알았기 때문에 이 문구를 입력해보겠습니다. 

password가 맞았습니다. 

이제 leviathan2을 권한을 가진 상태에서 shell을 사용할 수 있기 때문에,

leviathan2의 패스워드 파일을 확인할 수 있습니다.

반응형

+ Recent posts