Level 0
SSH Information
Host: leviathan.labs.overthewire.org
Port: 2223
Username: leviathan0
Password: leviathan0
ssh 접속
ssh leviathan0@leviathan.labs.overthewire.org -p 2223

일단 들어가서 파일을 확인

일단 의심스러운 .backup 파일을 분석해본다.
- : 일반 파일
d : 디렉토리
l : 심볼릭 링크
c : 문자 장치
b : 블록 장치
s : 소켓
p : 파이프
그 뒤로 문자는 읽기 쓰기 실행 권한을 소유자 그룹 나머지사용자 순으로 3개씩 나타낸다.
다음 숫자는 하드 링크(물리적 데이터를 가리키는 수) 카운트다. 디렉토리의 경우 2(.(현재 디렉토리) / ..(부모 디렉토리)) + 하위 디렉토리 수를 나타낸다.
그 다음 소유자와 그룹이 나온다. 마지막으로 크기와 시간이 나온다.
.backup에 파일이 있는 걸 확인했으니 들어가본다.
backup 파일
leviathan이라는 이름이 있을 거 같으니 확인해본다.
cat bookmarks.html | grep leviathan

3QJ3TgzHDq를 입력하니 leviathan1에 접속할 수 있었다.
Leviathan1
ssh leviathan1@leviathan.labs.overthewire.org -p 2223

보면 check가 의심스럽다. 실행권한이 있으니 실행해본다
./check

password가 걸려있다.
먼저 유의미한 문자열을 찾아본다.
strings ./check


의미있는 문자열을 찾지 못해서 ltrace(라이브러리 함수를 관찰하는 도구)로 함수를 찾아본다.
ltrace ./check
- strcmp → 문자열 비교 / 1은 서로 다르다. 0은 같다.
- getchar → 문자 단위 입력
- fgets → 문자열 입력
- puts, printf → 출력
- system → 셸 명령 실행 가능성
__libc_start_main(0x80490ed, 1, 0xffffd474, 0 <unfinished ...>
printf("password: ") = 10 # 10글자 출력했다
getchar(0, 0, 0x786573, 0x646f67password: test
) = 116 # getchar 문자 하나를 읽음. 116은 ASCII 코드로 't'
getchar(0, 116, 0x786573, 0x646f67) = 101 # 101 = 'e'
getchar(0, 0x6574, 0x786573, 0x646f67) = 115 # 115 = 's'
strcmp("tes", "sex") = 1
puts("Wrong password, Good Bye ..."Wrong password, Good Bye ...
) = 29
+++ exited (status 0) +++
test를 입력했고 tes와 sex를 비교했기 때문에 password가 sex일 가능성이 있다.

whoami를 입력해서 권한을 획득했다는 걸을 알 수 있다.
cat /etc/leviathan_pass/leviathan2
위치를 출력하면 값이 나온다.
'Security > OverTheWire' 카테고리의 다른 글
| Natas 14 15 (0) | 2026.03.16 |
|---|---|
| Natas 10 11 12 13 (파일 업로드 / 명령 실행 / injection) (0) | 2025.12.03 |
| Natas 5 6 7 8 9 (서버 요청/쿠키/필터 우회) (0) | 2025.12.03 |
| Natas 0 1 2 3 4 (기초적인 웹 구조) (0) | 2025.12.03 |
| Bandit Level 32 → Level 33, Bandit Level 33 → Level 34 (0) | 2025.12.02 |