SISS/Nebula Exploit
Nebula Level 06
Level 06 Level 06에는 소스코드가 없다. 대신 flag06의 account credential이 legacy unix system에서부터 온다고 한다. 이게 무슨 말인가 싶어서 우선은 /home/flag06으로 들어가 봤는데 눈에 띄는 파일이 하나도 없었다. 그래서 account credentials 라는게 무엇인지, legacy unix system은 무엇인지 찾아보았다. account credential : 정보 시스템의 특정 응용에서 사용하는 암호학적 개인 정보. 한 개인이 사용하는 공개 키 암호 알고리즘을 위한 공개 키/개인 키 쌍, 공인 인증 기관이 발행하는 공개 키 인증서, 신뢰하는 루트 인증 기관 관련 정보, 패스워드, 인가 정보 등을 포함하는 암호학적 정보의 총합. (출처 : ..
Nebula Level 05
Level 05 flag05 디렉토리에 권한이 약한 디렉토리가 있다고 한다. 소스코드가 없어 약간 무서웠지만 일단 /home/flag05 디렉토리에 있는 파일을 검색해보았다. 처음에 정말 눈에 들어오는 파일이 없어 당황했지만 자세히 보니 .backup이라는 디렉토리가 있어 이 디렉토리를 열어보았다. tgz라는 압축파일이 있는 것을 확인할 수 있었다. 이게 gzip으로 되어있었어서 gzip -d로 열어보려고 했는데 권한이 거부되었다고 한다. 그래서 다른 압축 해제 명령인 tar xvf 를 이용하여 풀어보았다. # 파일 압축 명령 ( 출처 : 내 블로그) ? 원래 tgz 파일이 tar.gz 파일의 약자로 tar 프로그램으로 파일들을 합친 후 gzip으로 다시 압축한 것이기 때문에 gzip으로 먼저 압축을 해..
Nebula Level 04
Level 04 Level 04에 대해 확인해 보자. token 파일을 읽는 것이 이번 목표이다. 소스코드를 우선 분석해보면 다음과 같다. #include #include #include #include #include #include int main(int argc, char **argv, char **envp) // argc : 프로그램을 실행할 때 지정해 준 "명령행 옵션"의 "개수"가 저장되는 곳 // -> 옵션을 하나도 입력하지 않으면 argc는 1이 됨. // argv : 프로그램을 실행할 때 지정해 준 "명령행 옵션의 문자열들"이 실제로 저장되는 배열{ char buf[1024]; // 버퍼의 크기 : 1024 int fd, rc; if (argc == 1) { // argc가 1일 경우 (..
Nebula Level 03
Level 03 Level 03의 문제를 보자. 소스코드는 없고, crontab 파일이 있다고 알려주고 있다. 소스코드가 따로 없으니 문제에서 알려준 대로 /home/flag03 디렉토리로 들어가보자. ♧ crontab : 정기적으로 계획된 간격으로 파일을 실행하도록 하는 명령어 writable.d라는 이름의 디렉토리와 writable.sh라는 파일이 있다. 우선 writable.d 디렉토리에 있는 파일/디렉토리를 보려고 했는데 아무것도 없었다. (처음에 다른 디렉토리는 .d가 안 붙어 있는데 왜 이 디렉토리에는 붙어있지 이러면서 엄청난 삽질을 하고 있었지만,, 알고보니 그냥 문제 만든 사람이 디렉토리 이름을 저렇게 한 것 뿐이었다..) 밑에 있는 writable 쉘스크립트 (sh 확장자가 붙어있는 것을..
Nebula Level 02
Level 02 Level 02 문제를 살펴보자. 다음 소스 코드에는 프로그램을 임의로 실행하는 취약점이 있다고 한다. 다음 소스 코드를 분석해보면 다음과 같다. asprintf(&buffer, "/bin/echo %s is cool", getenv("USER"));→ int asprintf(char **strp, const char*fmt) : fmt의 내용을 strp에 출력. strp에는 fmt + null의 크기만큼 자동으로 메모리가 할당된다. (allocated string printf) → getenv("") : ""의 환경변수를 가지고 온다.(get environment)☞ USER의 환경 변수를 %s에 넣고, /bin/echo (USER의 환경변수) is cool 문장을 buffer에 넣기 ..
Nebula Level 01
Level 01 Level 01의 문제를 보자. 아래 소스코드 (level1.c)에 취약점이 있으니 이를 찾아보라는 문제이다. level1.c 소스코드를 분석하면 다음과 같다. 12345678910111213141516171819#include #include #include #include #include int main(int argc, char **argv, char **envp){ gid_t gid; // group ID gid_t uid; // user ID gid = getegid(); // 현재 로그인 된 GID를 가지고 옴 uid = geteuid(); // 현재 로그인 된 UID를 가지고 옴 setresgid(gid, gid, gid); // Real gid, Effective gid, ..
Nebula Level 00
Level 00 밑에 그림에 써져 있는 주소 (https://exploit-exercises.com/download/)로 들어가면 맨 위에 Nebula라고 되어있다. 노란 네모박스로 되어있는 부분을 누르면 구글 드라이브로 이동되어 iso 파일을 받을 수 있다. iso 파일을 받은 후에는 VM으로 가서 새로 설치하면 된다. 다운받은 후 다시 Exploit 홈페이지로 돌아가면 Exercise → Nebula 에 Level이 00부터 19까지 있으니 쭉 해결해 나가면 된다. 이제 Level 00의 내용을 한 번 확인해보자. 우선 flag00의 권한을 가진 SetUID를 찾아야한다. # SetUID (출처 : 내 블로그) find 명령어를 사용하여 오류가 발생하지 않는 파일을 검색하였다. 사용한 명령어: fin..