상세 컨텐츠

본문 제목

[bandit] bandit12 -> bandit13

리눅스/bandit

by 해공학(해킹을 공부하는 학생) 2023. 5. 11. 06:30

본문

overthewire 페이지를 해석해 보겠습니다.

"data.txt 파일은 hexdump 파일로, 여러번 압축된 파일이야.

/tmp 경로에 디렉토리를 만들고 압축을 풀변 쉬워" 라고 말하고 있습니다.

처음 이 말을 보시는분들은 이게 뭔말인지 이해를 못하실겁니다.

그러실껄알고 제가 하나하나 설명해 드리겠습니다.

 

우선 hexdump 부터 알아보겠습니다.

hexdump는 컴퓨터의 저장장치에 있는 컴퓨터의 데이터를 16진법으로 표시한것 입니다.

이것은 어려워도 외우셔야합니다^^ㅠㅠ

 

16진법은 무엇일까요?

16진수에 속해진 숫자들 부터 보겠습니다.

0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 이렇게 16개 입니다. 이알파벳들을 우리가 이해할수있게 바꾸면

a=10, b=11, c=12, d=13, e=14, f=15 입니다.

이런식으로 2진수로 나타내기 힘든것들을 16진수로 읽기 편하라고 하는것 입니다.

아래것을 참고하시면 이해가 잘되실 겁니다 => https://halinstudy.tistory.com/29

 

 

자 그럼 이제 bandit을 풀어보겠습니다.

우선 몇가지 실험을 해보겠습니다.

bandit12@bandit:~$ ls
data.txt
bandit12@bandit:~$ cat data.txt
00000000: 1f8b 0808 2773 4564 0203 6461 7461 322e  ....'sEd..data2.
00000010: 6269 6e00 0145 02ba fd42 5a68 3931 4159  bin..E...BZh91AY
00000020: 2653 597b 4f96 5f00 0018 ffff fd6f e7ed  &SY{O._......o..
00000030: bff7 bef7 9fdb d7ca ffbf edff 8ded dfd7  ................
00000040: bfe7 bbff bfdb fbff ffbf ff9f b001 3b56  ..............;V
00000050: 0400 0068 0064 3400 d341 a000 0680 0699  ...h.d4..A......
00000060: 0000 69a0 0000 1a00 1a0d 0034 0034 d3d4  ..i........4.4..
00000070: d1a3 d464 6834 6403 d469 b422 0d00 3400  ...dh4d..i."..4.

bandit12@bandit:~$ mkdir filename
mkdir: cannot create directory ‘filename’: Permission denied

이런식으로 hexdump 파일이 있고, /tmp 파일을 제외한 다른 파일에는

디렉토리와 파일을 생성 못하게 되어있네요.

그럼 bandit에서 하라는데로 /tmp 파일에 디렉토리를 만들고, 파일을 복사하겠습니다.

bandit12@bandit:~$ mkdir /tmp/filename1
bandit12@bandit:~$ cp data.txt /tmp/filename1
bandit12@bandit:~$ cd /tmp/filename1
bandit12@bandit:/tmp/filename1$ ls
data.txt
bandit12@bandit:/tmp/filename1$

우리는 mkdir,cp,cd,ls 명령어를 통해 이일을 했습니다. 여기서 저의 블로그를 보아주시던 분들이라면,

mkdir와 cp명령어를 몰르실 것 입니다. 그럼 바로 설명 드가겠습니다.

 

mkdir는 리눅스에서 디렉토리를 만드는 명령어 입니다. 

사용법은 mkdir [만들 경로/파일이름] 이런식으로 하시면 끝입니다.

 

cp는 copy의 줄임말로, 디렉토리나 파일을 복사하는 명령어 입니다.

사용법은 cp [복사할 파일] [복붙 당할 디렉토리] 이런식으로 하시면 됩니다.

 

그럼 이제 명령어도 다 살펴봤고 다시 시작할려는데,이번에는 xxd 라는 명령어가 나오네요

 

xxd 명령어는 바이너리 파일을 hexdump로 바꾸거나,

반대로 hexdump를 바이너리 파일로 바꿀때 사용합니다.

사용법은 xxd [옵션] [파일] 식으로 씁니다.

 

다시 bandit으로 왔습니다. 아주 손이 아프네요 ㅠㅠ

그럼 이것을 바이너리 파일로 바꾸고 이것의 zip파일을 풀어보겠습니다.

bandit12@bandit:/tmp/filename1$ xxd -r data.txt > zipfile
bandit12@bandit:/tmp/filename1$ ls
data.txt  zipfile  
bandit12@bandit:/tmp/filename1$ gunzip zipfile.gz
bandit12@bandit:/tmp/filename1$ ls
data.txt  zipfile

위에서 할실때 무.조.건 확장자명을 붙이 셔야 합니다.

이번에는 확장자명이 bzip2이네요. 그럼 또 풀어보겠습니다.

bandit12@bandit:/tmp/filename1$ mv zipfile zipfile.bz
bandit12@bandit:/tmp/filename1$ ls
data.txt  zipfile.bz
bandit12@bandit:/tmp/filename1$ bzip2 -d zipfile.bz
bandit12@bandit:/tmp/filename1$ ls
data.txt  zipfile

확장자를 바꿔야 하니 mv를 했습니다.

이번에는 gzip으로 다시 되어있네요

bandit12@bandit:/tmp/filename1$ mv zipfile zipfile.gz
bandit12@bandit:/tmp/filename1$ ls
data.txt  zipfile.gz
bandit12@bandit:/tmp/filename1$ gunzip zipfile.gz
bandit12@bandit:/tmp/filename1$ file zipfile
zipfile: POSIX tar archive (GNU)

이번엔 tar 로 되어 있네요.

bandit12@bandit:/tmp/filename1$ mv zipfile zipfile.tar
bandit12@bandit:/tmp/filename1$ tar -xvf zipfile.tar
data5.bin
bandit12@bandit:/tmp/filename1$ ls
data5.bin  data.txt  zipfile.tar

갑자기 data5,bin 파일이 나오고, 이것도 tar로 되어 있네요. 

bandit12@bandit:/tmp/testfile$ file data5.bin
data5.bin: POSIX tar archive (GNU)
bandit12@bandit:/tmp/testfile$ mv data5.bin data5.tar
bandit12@bandit:/tmp/testfile$ tar -xvf data5.tar
data6.bin

이번에는 data6.bin 이 나오고, 이것은 bzip2이네요

bandit12@bandit:/tmp/testfile$ file data6.bin
data6.bin: bzip2 compressed data, block size = 900k
bandit12@bandit:/tmp/testfile$ mv data6.bin data6.bz
bandit12@bandit:/tmp/testfile$ bzip2 -d data6.bz
bandit12@bandit:/tmp/testfile$ ls
data5.tar  data6  data.txt  zipfile.tar
bandit12@bandit:/tmp/testfile$ file data6
data6: POSIX tar archive (GNU)

이번에는 tar 파일이네요.

bandit12@bandit:/tmp/testfile$ mv data6 data6.tar
bandit12@bandit:/tmp/testfile$ tar -xvf data6.tar
data8.bin
bandit12@bandit:/tmp/testfile$ file data8.bin
data8.bin: gzip compressed data, was "data9.bin", last modified: Sun Apr 23 18:04:23 2023, max compression, from Unix, original size modulo 2^32 49

이번에는 gzip

bandit12@bandit:/tmp/testfile$ mv data8.bin data8.gz
bandit12@bandit:/tmp/testfile$ gunzip data8.gz
bandit12@bandit:/tmp/testfile$ ls
data5.tar  data6.tar  data8  data.txt  zipfile.tar
bandit12@bandit:/tmp/testfile$ file data8
data8: ASCII text
bandit12@bandit:/tmp/testfile$ cat data8
The password is wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw

비밀번호는 wbWdlBxEir4CaE8LaPhauuOo6pwRmrDw 입니다.

 

정리

hexdump는 컴퓨터의 데이터를 16진법으로 나타낸것이다.

16진수는 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 로 이루어져 있다.

zip 파일을 풀는 명령어는 gunzip(gzip), bzip2 -d(bzip), tar -xvf(tar) 으로 할수있다.

'리눅스 > bandit' 카테고리의 다른 글

[bandit] bandit14 -> bandit15  (0) 2023.05.20
[bandit] bandit13 -> bandit14  (0) 2023.05.17
[bandit] bandit11 -> bandit12 --친절한 풀이  (0) 2023.05.09
[bandit] bandit10 -> bandit11  (0) 2023.05.09
[bandit]bandit9 -> bandit10  (0) 2023.05.07

관련글 더보기