R's Hacking Daily Log

Leviathan2 -> Leviathan3 본문

OverTheWire/Leviathan

Leviathan2 -> Leviathan3

hanhxx 2023. 1. 6. 08:18
Connection : ssh leviathan2@leviathan.labs.overthewire.org -p 2223
username : leviathan2

 

 

Kali linux - Terminal

현재 경로에 들어있는 printfile이라는 파일을 실행해본다.

해당 파일은 file printer라는 데, Usage에 사용법을 출력해주고 있다.

 

 

파일을 하나 만들어서 printfile을 실행해보니, 정말 말 그대로 파일의 내용을 출력하고 있다.

 

 

흠. 그렇다면 password가 들어있는 파일을 출력하게 해볼까했지만,

/etc/leviathan_pass/leviathan3는 Permission denied라고 출력된다. 

 

 

차근차근 다시 생각해보자.. 일단 권한을 확인해보면, printfile의 owner가 leviathan3로 되어있다.

 

 

x에 해당하는 자리에 s로 표시되는 걸 보면, 해당 파일이 실행될 때 root가 아니라 leviathan3 권한으로 실행되는 듯하다.

 

 

다른 힌트가 있을까 싶어, ltrace command를 사용해봤다.

중간에 눈에 띄는 "/bin/cat"

 

 

snprintf() = overflow를 방지하며 buffer size에 알맞게 지정된 서식의 문자열을 저장하는 함수이다. 

printfile에서는 "/bin/cat %s"가 지정된 서식이고 %s자리에는 사용자가 입력한 파일의 이름이 들어간다. 

 

 

이후 system()로 해당 문자열의 내용이 실행되는 것.

그렇다면, " ; "을 사용해서 다른 명령어를 이어서 실행되게 한다면 문제를 풀 수 있을까?-?

바로 실행해봤다.

 

따옴표로 묶어서 처리해줘야 중간에 세미콜론을 붙인 형태로 파일 이름을 지정할 수 있다.

 

결과로는 "No such file or directory"라고 나오는데.. user부분을 보니..?!

leviathan2에서 leviathan3으로 바뀐 것을 볼 수 있다.

 

" ;bash "로 leviathan3 권한으로 printfile이 실행되고 있을 때 shell을 얻었나보다. 

'OverTheWire > Leviathan' 카테고리의 다른 글

Leviathan5 -> Leviathan6  (0) 2023.01.07
Leviathan4 -> Leviathan5  (0) 2023.01.07
Leviathan3 -> Leviathan4  (0) 2023.01.06
Leviathan1 -> Leviathan2  (0) 2023.01.05
Leviathan0 -> Leviathan1  (0) 2023.01.05
Comments