반응형

exploit-exercises 문제풀이 / Nebula Level07 - perl

 

flag07 사용자는 웹 서버에서 접근 할 수 있는지 확인하기 위해,

호스트를 ping 할 수있는 첫 번째 perl 프로그램을 작성했다고 합니다. 

 

login은 ID/PW를 level07/level07로 하고, 이 레벨을 위한 파일은 /home/flag07에 있다고 합니다. 

 

문제로 나온 index.cgi 코드입니다. 

Host에 $host 입력을 위한 localhost 주소(127.0.0.1)를 입력해 보도록 하겠습니다. 

./index.cgi 파일에 Host 전달인자를 넣어 실행하면, 전달인자로 넣은 주소로 ping이 가게 됩니다. 

웹 서버에 대한 설정이 들어 있는 thttpd.conf 파일을 보겠습니다. 

port는 7007이고, 웹 서버의 디렉토리를 /home/flag07로 설정되어 있습니다. 

웹으로 포트는 7007이고, /home/flag07 디렉토리에 있는 파일을 실행시킬 수 있습니다. 

또한 그 파일을 실행시킬 때, flag07의 권한으로 실행시킬 수 있습니다. 

웹으로 접근하기 위해 ip를 확인하여 접근하도록 하겠습니다. 

index.cgi 파일에 Host를 ping 하는 것이 flag07 권한으로 실행되었습니다. 

그러면 이 주소에 getflag 명령어를 넣어 flag07 권한으로 getflag가 실행되도록 하겠습니다. 

세미콜론을 의미하는 %3B를 넣고, getflag 명령어를 입력하였더니, 아래와 같이 문제가 해결되었습니다. 

반응형
반응형

exploit-exercises 문제풀이 / Nebula Level06 - john the ripper

 

flag06 계정 증명은 기존 유닉스 시스템에서 왔다고 합니다. 

문제 힌트가 별로 없어서 약간 어려운 문제인 듯 합니다. 

 

/home/level06, /home/flag06 디렉토리에는 아무런 파일이 존재하지 않습니다. 

각 계정의 패스워드 정보가 들어 있는 /etc/passwd 파일의 내용을 보겠습니다. 

다른 계정과 달리 flag06의 두번째 필드인 패스워드 칸에는 x가 아닌 문자열로 있는 것을 볼 수 있습니다.

이는 /etc/shadow 파일에 비밀정보가 있는 것이 아니라 해시 함수로 암호화되어 해시 코드가 생성된 것을 알 수 있습니다. 이 내용을 가지고 패스워드를 찾기위해 john the ripper라는 툴을 사용하겠습니다.  

kali 리눅스에서 john the ripper tool을 제공하는데, 이 kali 리눅스에서 해당 툴을 이용해 보겠습니다. 

test.txt 라는 파일을 만들어서 flag06의 계정정보를 입력하엿습니다. 

그리고 john ./test.txt를 실행시켜 패스워드를 크래킹하였는데, 패스워드가 hello로 결과값을 출력하는 것을 볼 수 있습니다. 

flag06 계정에 접속하여 getflag 명령어로 해결되었음을 볼 수 있습니다.

반응형
반응형

exploit-exercises 문제풀이 / Nebula Level05

 

/home/flag05 홈 디텍토리에서 권한이 약한 디렉토리를 찾는 문제입니다. 

ID/PW는 level05 / level05를 가지고 로그인합니다. 

 

/home/flag05 디렉토리로 가서 ls -al 명령어를 입력합니다. 

.backup 디렉토리가 있는데, 권한이 rwxr-xr-x 이기 때문에 접근이 가능합니다. 

이 디텍로리로 들어갑니다. 

.backup 디렉토리에는 tgz 압축파일이 있습니다. 

이 파일의 압축을 풀려고 할때, /home/flag05 디렉토리에서는 권한이 없어, 이 파일을 /home/level05 디렉토리로 복사하고 압축을 풉니다. 

압축을 풀어보면 .ssh/ 디렉토리에 3개의 ssh 관련 파일이 생성됩니다. 

 

ssh -i 명령어를 이용해 전달인자로 id_rsa 파일을 넣고, flag05 계정에 접속합니다.

그럼 아래와 같이 flag05 계정으로 접속됩니다. 

이때 getflag 명령어를 입력하면 이 문제가 해결됩니다.

반응형
반응형

exploit-exercises 문제풀이 / Nebula Level04

 

이번 문제는 token 파일을 읽어야 된다고 합니다. 

하지만, 그 코드는 읽을 수 있는 파일을 제한한다고 합니다.

우회하는 방법 찾아야 합니다. 

이 레벨을 수행하려면 비밀번호 level04를 사용하여 level04 계정으로 로그인합니다. 

이 레벨의 파일은 /home/flag04에서 찾을 수 있습니다.

 

코드는 아래와 같습니다. 

 

먼저 전달인자의 수를 점검합니다. 

그리고 두번째 전달인자에 token이라는 문자열이 있는 경우 프로그램을 종료시킵니다. 

그 두번째 전달인자에 대한 파일의 크기를 제한하고 있습니다. 

파일의 크기를 제한하는 것을 우회해야 됩니다. 

/home/flag04 디렉토리에 가보면 flag04라는 실행파일이 있고, token 파일이 있습니다. 

전달인자로 token을 넣어 flag04를 실행해보면 token에 접근할 수 없다고 합니다.  

이 token 파일의 이름을 변경하는 것이 안되기 때문에, 

이 token 파일을 가르키는 심볼릭 링크 파일을 만들도록 하겠습니다. 

이 심볼릭 링크 파일을 flag04 실행파일의 전달인자로 넣어보겠습니다. 

파일이 읽어 졌고, 파일 안에는 flag04의 암호가 출력됩니다. 

 

flag04 계정으로 접속하여, getflag로 이 문제가 해결된 것을 볼 수 있습니다.

반응형

+ Recent posts