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] 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 |