WAR GAME/Bandit

[OverTheWire: Bandit] level12 -> level13

jir4vvit 2020. 2. 26. 22:58

사용 툴: cygwin

 

1) 문제

level12 -> level13 문제

패스워드는 data.txt파일에 있고, 헥스 덤프파일이다.

이 레벨을 위해서는 mkdir명령어를 사용하여 디렉터티를 /tmp 밑에 만들고 cp와 mv 명령어도 이용한다.

 

 

2) 문제풀이

bandit12로 로그인 후 홈디렉터리의 data.txt파일을 열어보았다

cat data.txt

위에 보이는 내용 형식이 헥스 덤프파일이다.

 

권한x

- rw- r-- ---

data.txt의 permission을 살펴보면 소유자만 읽고쓰기가 가능하고 같은 그룹은 읽기 권한, 그 외는 아무 권한이 없다.

 

결론은 우리가 이 파일을 만지기 위해서는 여기가 아니라 문제에서 알려줬듯이

/tmp 에 저 파일을 복사하여 만져야한다.

 

참고로 /tmp는 임시로 파일을 저장하는 디렉토리로, 권한에 상관없이 누구나 이 디렉토리에 파일을 생성할 수 있다. 

 

bandit12@bandit:~$ mkdir /tmp/mydata5
bandit12@bandit:~$ cp ./data.txt /tmp/mydata5
bandit12@bandit:~$ cd /tmp/mydata5
bandit12@bandit:/tmp/mydata5$ pwd
/tmp/mydata5

이렇게 /tmp 밑에 내가 사용할 mydata5 디렉터리를 만들어주었다. (mkdir)

그리고 현재 위치(/home)에서 내가 생성한 /tmp/mydata5 디렉터리로 data.txt를 복사해주었다. (cp)

/tmp/mydata5 로 위치를 이동시켜주고 (cd)

위치가 잘 옮겨졌는지 한 번 더 확인해주었다. (pwd)

 

file data.txt

data.txt 파일은 ASCII text이지만 16진수 덤프 값을 가지고 있다.

(캡처는 하지 않았지만 cat으로 열어보면 홈디렉터리에서와 똑같은 내용이 들어있다는 알 수 있다.)

 

이 문제의 핵심은 덤프 파일을 원래 파일로 복원해줘야한다는 것이다.

 

(0) xxd 명령어 사용

여기서 덤프파일을 바이너리 파일로 바꿔주는 xxd 명령어를 사용하였다.

xxd -d data.txt

와 뭔소리냐

이렇게 직접 접근하지 말고 data라는 이름의 새 파일을 만들어주자

xxd -r data.txt > data

 

(1) gzip 압축 풀기

1) data는 gzip이다.

xxd 명령어를 사용하여 바이너리 파일을 만들어줬는데 그 파일이 gzip이라고 한다.

한마디로 압축파일이라는 뜻이다. 저걸 풀면 data2.bin이 나온다고 한다.

 

 

gzip 압축해제 진행

처음에 압축을 푸는 것을 실패하였다.

원래 gizp -d 명령(압축풀기)을 사용할 떄는 gz확장자가 있어야한다.

그래서 mv 명령어를 통해 gz확장자를 달아주고나서야

gzip -d 명령으로 압축을 해제할 수 있었다.

 

 

(2) bzip2 압축 풀기

(아쉽게도 이 부분은 캡쳐를 못하였다,,,)

file data

data 파일이 뭔지 살펴보면 bzip2로 압축이 되어있다고 나온다.

 

bzip2 -d data

bzip2 -d 명령어로 압축을 풀어준다.

 

data.out

그러면 data.out 파일이 나오게 된다.

 

 

(3) 또 gzip 압축풀기, 아카이브의 등장...?

(1)이랑 똑같다.

위에 설명이랑 똑같다.

data.out 파일은 gzip 파일이었고, 압축풀기를 위해서 확장자를 gz으로 바꾸어주었다.

바꾸어 준 후 gzip -d 명령으로 압축을 풀어주었고,

data.out 파일이 다시 등장하였다.

 

file 명령으로 살펴보니 이 파일은 아카이브 라고 한다.

 

아카이브란 그냥 파일을 모아놓은 것이라고 생각하면 쉽다. 압축과 다르게 용량을 줄이지 않는다.

 

 

(4) 아카이브 풀기(2번)

 

두번...

tar 명령어를 이용하여 아카이브 파일을 풀어줬더니

data5.bin이 나왔다.

 

data5.bin 파일을 확인해보니까 아카이브 파일이라서

다시 tar 명령어를 이용해 압축을 해주니까 data6.bin이 나왔다.

 

 

(5) bzip2 풀기

 

bzip2 풀기

아까 위에서 한거랑 똑같다.

똑같은 게 계속 반복이다.

 

이 전단계에서 결과물로 나온 data6.bin을 확인 해 보니까 bzip2 였다.

 

똑 같 이 bizp2 명령어를 이용해서 압축을 풀어주니까

data6.bin.out이 나왔다.

 

 

(6) 아카이브 풀기

 

똑같은 것의 반복

계속 똑같은 말만 하니 설명을 생략하겠다.

 

압축해제하니까 data8.bin 파일이 나왔다.

 

 

(7) gzip 풀기

 

실수로 오타냈다. 죄송...

여기도 앞에와 똑같으니 설명은 생략하도록 하겠다.

gzip 압축풀기 할 때 파일은 무조건 .gz 확장자여야 한다는 것만 알면 된다.

 

압축을 풀면 data8.bin이 나온다.

 

 

(8) 끝..?

저게 bandit13의 패스워드인 것 같다...

와 data8.bin은 다행이도 아스키 텍스트였다(?)

조심스럽게 cat으로 열어보면

우리가 패스워드의 형태로 계속 마주하던 문자열이 나열되어 있다.

 

 

bandit13로 로그인에 성공해 확인해보니 저 문자열이 bandit13의 패스워드가 맞다는 것을 확인할 수 있었다.

ssh -p 2220 bandit13@bandit.labs.overthewire.org
id

 

 

이 문제는 좀 노가다인 것 같다.

걍 패스워드를 다섯여섯일곱.. 압축을 해놓고 풀어봐라! 하는 문제...라고 생각하면 된다...