Level Goal
The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work using mkdir. For example: mkdir /tmp/myname123. Then copy the datafile using cp, and rename it using mv (read the manpages!)
Commands you may need to solve this level
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv, file
Helpful Reading Material
data.txt 파일에 있다고 하네요. 그 패스워드는 반복 압축한 파일을 hexhump로 변환해 있다고 합니다.
또한 이 레벨에서는 /tmp 디렉토리에 mkdir을 해서 디렉토리를 만드는것이 유용할 것이라고 합니다.
예시 또한 주어졌네요.
문제 풀이
문제를 풀고 정리하느라 여러번 만들고 지우고 다시하고 힘들었지만 저렇게 했으니 밑에 dash date는 무시해주세요.
먼저 문제에서 말한 /tmp 에 폴더를 만들어서 진행하라고 하는 이유는 기존 bandit12폴더에서는 다른 파일 생성이나 제거가 권한 문제로 할 수 없기 때문입니다.
따라서 mkdir /tmp/[폴더이름] 을 통해 만든 폴더에서 진행해 나가야합니다.
저의 폴더이름은 nesquitto입니다.
참고로 이 bandit 서버는 모두가 같이 쓰는것이기 때문에 폴더 이름이 겹치는 경우 이미 겹친다고 생성할 수 없습니다. 이 점 참고해주세요.
이 문제를 풀 때 가장 중요한 것은 file 명령어를 통해 해당 파일이 어떤 방식으로 압축되었는지 확인하는 것입니다. 압축 방식에 따라 확장자명도 바꿔야하고 압축 해제 방식도 다르기 때문이죠.
이 문제는 조금 짜증나게 압축풀기도 5번 넘게 해야하고 이름도 계속 바꿔줘야합니다.
gzip
file 명령어 사용
[파일이름] : gzip compressed data, was "data2.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix
gzip 확장자명
[파일이름].gz
압축풀기 방법
gzip -d [파일이름.gz]
bzip2
file 명령어 사용
[파일이름] : bzip2 compressed data, block size = [용량]
bzip2 확장자명
[파일이름].bz2
압축풀기 방법
bzip -kd [파일이름.bz2]
tar
file 명령어 사용
[파일이름] : POSIX tar archive (GNU)
tar 확장자명
[파일이름].tar
압축풀기 방법
tar xvf [파일이름.tar]
**Linux 명령어 설명(누적)
ls : 현재 디렉토리에 있는 파일을 보여줍니다.
ls -a : 현재 디렉토리에 있는 파일을 숨겨진 파일까지 전부 보여줍니다.
cat [파일명] : [파일명]의 내용을 출력합니다.
cat ./[파일명] : 현재 디렉토리에 있는 [파일명]의 내용을 출력합니다.
cat [파\ 일\ 명] : linux는 공백을 기준으로 앞뒤를 서로 다른 파일로 인식합니다.
cd [디렉토리명] : 해당 디렉토리로 이동합니다.
cd .. : 현재 디렉토리의 상위 디렉토리로 이동합니다.
file [파일명] : [파일명] 파일의 종류를 출력합니다.
find [파일명] : [파일명]으로 된 파일을 찾습니다.
find -size [용량][단위] : [용량][단위]인 파일을 찾습니다.
(b:block, c:bytes, w:2bytes, k:kbytes, M:mbytes, G:gbytes)
find -user [user이름] : 소유중인 user 이름이 [user이름]인 파일을 찾습니다.
find -group [group이름] : 소유중인 group 이름이 [group이름]인 파일을 찾습니다.
grep "[문장]" [파일명] : [파일명]에서 [문장]이 속한 해당 줄을 출력합니다.
sort [파일명] : [파일명] 내부의 문장이 오름차순으로 정렬됩니다.
uniq [파일명] : [파일명] 내부의 문장들 중 연속된 중복 문장을 하나만 출력되게 합니다.
uniq -u [파일명] : [파일명] 내부의 문장들 중 연속된 중복 문장을 모두 삭제하고 출력합니다.
strings [파일명] : binary file인 [파일명]에서 문자열을 추출하여 출력합니다.
base64 [파일명] : [파일명]의 내용을 base64 방식으로 인코딩합니다.
base64 -d [파일명] : 이미 base64방식으로 인코딩 된 [파일명] 내용을 디코딩합니다.
(base64 --decode [파일명])으로 해도 동일한 결과를 얻을 수 있습니다.
tr '[바꿀기준]' '[바뀔기준]' : 바꿀기준의 규칙을 바뀔기준의 규칙으로 치환해줍니다.
mkdir [파일이름] : [파일이름]으로 디렉토리를 생성합니다.(*)
mv [파일이름] [바꿀이름] : 파일의 이름을 바꿉니다. (원래는 파일 위치를 바꿀 때 사용합니다.)(*)
cp [파일이름] [복사할이름] : [파일이름]을 복사하여 [복사할이름] 파일을 생성합니다.(*)
gzip -d [파일이름.gz] : gzip 압축파일의 압축을 해제합니다. (*)
bzip -kd [파일이름.bz2] : bzip2 압축파일의 압축을 해제합니다. (*)
tar xvf [파일이름.tar] : tar 압축파일의 압축을 해제합니다. (*)
* : 와일드카드, 문자를 대체하여 사용합니다.
| : 파이프, 이전 명령어를 통해 수행한 결과를 다음 명령어에 보내줍니다.
'Hacking-기초 > Linux Bandit' 카테고리의 다른 글
Bandit Level 13 → Level 14 (0) | 2020.04.10 |
---|---|
Bandit Level 11 → Level 12 (0) | 2020.04.10 |
Bandit Level 10 → Level 11 (0) | 2020.04.10 |
Bandit Level 9 → Level 10 (0) | 2020.04.10 |
Bandit Level 8 → Level 9 (0) | 2020.04.10 |