목록Wargame/Leviathan (7)
농소
6단계 시작해보도록 하겠습니다. 전과 같이 홈디렉터리에 실행할 수 있는 setuid 파일이 있습니다. 실행해봤더니 4 digit code 라는 힌트를 친절하게도 내뱉네요ltrace로 해보았더니 input함수가 없으므로 두번째 argv를 이용해야하는것 같습니다.2번째 argv로 1234를 넣었더니 wrong 이라고 내뱉네요brute force 공격을 하면 0000 ~ 9999 까지 금방하겠지만저는 gdb를 이용해서 패스워드를 찾아보겠습니다. 머 일일히 다 볼 필요는 없고 패스워드를 비교하는 문제니까 cmp명령어를 주로 보면 될 것 같네요 첫번째 cmp는 인자가 2개인지 체크를 하네요 별볼일 없으니 다음으로 넘어갑니다. 자 여기서 입력값과 esp+0x1c의 메모리값과 비교를 하네요 이 esp+0x1c이 무엇..
이어서 5단계 문제를 풀어보겠습니다 홈디렉터리에 실행파일이 있네요 실행해 봤더니 /tmp/file.log를 찾을 수 없다고 나옵니다.ltrace로 실행시켜봤더니fopen함수를 실행시키고 있습니다.해당파일이 존재하지 않는것 같네요 생성해봅시다. 해당파일을 생성하고 다시 ltrace로 실행해 봅니다. 파일을 열고 fgetc 함수를 실행시키네요 무엇인가 문자를 출력해주는것 같습니다. 실행이 끝나고나면 파일이 삭제되니 다시 만들어주시고 그안에 문자를 넣어보겠습니다. 네 파일내용을 문자 하나하나씩 출력해주고있는 모습이네요 패스워드파일에 링크를걸고 실행했더니 안에들어있던 패스워드를 출력해 줍니다.
4단계 문제를 풀도록 해보겠습니다. 숨김파일에 쓰레기통 폴더가 있네요 들어가 봅시다. 들어갔더니 bin이라는 실행할 수 있는 파일이 있네요 실행해 봅시다. 1바이트씩 잘라서 바이너리 형태로 보여주고있네요 아마 bin이 binary의 약어인듯 합니다.ltrace를 했더니 다음 level의 패스워드 파일을 오픈하는 함수가 있네요 그리고 true를 뱉습니다.그렇다면 실행했을때 저 바이너리는 아마 문자들을 바이너리로 바꾼형태 인듯 합니다.다시 바꿔주면 패스워드가 나오게됩니다.
이어서 레벨 3을 진행해보겠습니다. 이번에도 홈 디렉터리에 실행가능한 level3이라는 실행파일이 존재하네요 실행해 보면 패스워드를 입력하라는 메시지를 뱉습니다. 1234를 입력했더니 잘못되었다고하네요올바른 패스워드를 입력하면 되는것 같습니다. ltrace로 라이브러리 함수들을 살펴보니 strcmp가 나오네요 처음껀 입력값과 비교하는게 아니므로 제끼고두번째 strcmp함수를 보니 입력값과 snlprintf와 비교를 하네요.. 간단 올바른 passwd를 입력하니 권한상승이 이루어졌습니다.
이번에는 level 2를 진행해 보겠습니다. 이번에도 홈디렉터리에 printfile이라는 실행파일이 존재하였고 실행해 보았더니 두번째 인자에 filename을 적으라는 메시지를 날린다음.. 아마 cat과 같은 일을 하는 것으로 보이는데 역시 cat과 같은 일을 하는 실행파일 이었다.다음으로 ltrace로 무엇이 동작하는지 확인해보면 두번째 인자로 파일이 아닌것을 입력하였더니 처음으로 access함수가 실행됨을 알 수 있다. access함수가 어떠한 일을 하는지를 잘 몰라서 조사해 보았더니 존재여부와 읽고 쓸 수 있는지를 확인하는 함수였네요 읽고 쓸 수 있는 파일을 만들어 보고 ltrace를 해보겠습니다. 이 프로그램이 level3의 권한으로 실행되니깐 이 파일로 비밀번호를 얻을 수 있을까 싶어서 넣어봤지..
이어서 바로 2단계 문제를 풀어 보겠다 홈디렉터리에 ls명령어를 해보니 check라는 실행파일이 존재한다.권한을 보니 다른 사용자도 실행할 수 있음을 알 수 있다. 실행을 해보니 password를 입력하라는 input이 나온다. 1234를 입력해 보았더니 false를 내뱉는다. 우선 ltrace로 라이브러리를 무엇을 사용하는지 대강 알아보았다. 손쉽게도 strcmp함수로 해당 입력문과 sex를 비교하고 있는걸 볼 수 있다.. 올바른 입력값을 입력했더니 권한상승을 시켜줍니다. 권한상승이 되었으므로 /etc/leviathan_pass/leviathan2 파일에서 비밀번호를 얻으면 끝.
홈페이지 = http://overthewire.org/wargames/leviathan/ 우선 leviathan은 0단계부터 7단계까지 총 8단계의 문제가 있고난이도가 1/10라고 나와있는걸봐선 입문자가 풀기좋은 워게임인것 같네요간단히 풀어보도록 합시다./etc/leviathan_pass 디렉터리를 가보면 소유자만이 접근할 수 있는 패스워드 파일이 들어있다. 문제를 클리어 할 때마다 다음 사용자로 로그인하여 진행하는 방식이다. 우선 0단계를 시작해보겠다. 접속을하고나서 홈디렉터리에 ls -a 를 했을때 백업파일이 있음을 확인.들어가 보았더니 그룹권한으로 읽을 수 있었다 cat명령어로 읽어서 leviathan 단어가 있는곳을 찾아보았더니 패스워드를 발견. 0단계는.. 시스템 해킹이라고 볼순 없고 그냥 백업..