Bandit level12
OverTheWire 문제풀이 - Bandit
* Bandit 는 리눅스 관련 문제입니다.
* 리눅스 명령어를 연습하기에 아주 좋습니다.
* 개인적인 문제풀이로 해답을 보시기 전에 직접 풀어보시기를 권해드립니다.
Bandit level12
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
Helpful Reading Material
Hex dump on Wikipedia
레벨 목표
다음 레벨의 암호는 반복적으로 압축 된 파일의 16 진수 덤프 인 data.txt 파일에 저장됩니다. 이 수준에서는 / tmp 아래에 mkdir을 사용하여 작업 할 수있는 디렉토리를 만드는 것이 유용 할 수 있습니다. 예 : mkdir / tmp / myname123. 그런 다음 cp를 사용하여 데이터 파일을 복사하고 mv를 사용하여 이름을 바꿉니다 (man 페이지 읽기!)
이 레벨을 해결하는 데 필요할 수있는 명령
grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv
유용한 읽기 자료
Wikipedia에 Hex dump
Hex dump?
hex dump는 램 또는 파일이나 저장장치에 있는 컴퓨터 데이터의 십육진법적인 보임새이다. 데이터의 hex dump를 보는 것은 주로 디버깅이나 리버스 엔지니어링의 한 부분이다.
hex dump에서, 각 바이트는 2 숫자의 16진법 수로 표현된다. Hex dumps는 주로 8 또는 16바이트의 행으로 조직되며, 가끔은 흰 공간으로 분리된다. 몇몇 hex dump들은 시작에서나 마지막 라인의 체크섬 바이트에서 16진법의 메모리 주소를 갖는다.
비록 이름은 16 기반 출력을 암시하지만, 몇몇 덤핑 소프트웨어는 8 기반이나 10 기반 출력도 갖는다. 이 프로그램 기능을 갖는 흔한 이름으로, hexdump, od, xxd 그리고 단순히 dump 또는 심지어 D도 있다.
※ 출처 : 위키백과
[문제 풀이]
ls 명령어로 주어진 data 파일을 살펴보면 16진수 코드로 표현되어 있는 hex 코드를 볼 수 있습니다.
우리가 조금 더 쉽게 볼 수 있게 바이너리 데이터로 바꿀 필요가 있겠습니다.
그 전에 힌트에 보면 /tmp 디렉터리에 디렉터리를 만들고 문제를 진행하는게 편하다고 하니 자기만의 디렉터리를 따로 만들고 cp 명령어로 원본파일을 복사합니다. 아무래도 권한 때문에 홈디렉터리에서 파일을 생성 및 수정할 수 없기 때문에... 이런 방법을 사용하라고 한 것 같습니다. 파일의 내용을 수정할 필요가 있다는 뜻이겠죠!
#> xxd -r data.txt
xxd 명령어를 사용하여 내용을 바이너리 데이터로 바꿔 보니 내용이 상당히 깨져있어서 볼 수가 없습니다... strings 명령어를 사용해 문자열로 변환해봐도 의미 없는 내용만 출력됩니다.
#> xxd -r data.txt > log
#> file log
조금 더 편하게 작업하기 위해 원본파일은 내버려두고 xxd 명령어로 바이너리로 바꾼 파일을 log에 저장시키겠습니다.
file 명령어를 이용해 이게 대체 무슨 파일인지 확인해 봅니다. 그러자 위와 같이 gzip으로 압축된 형태의 데이터라고 나옵니다.
mv 명령어를 사용하라는 이유를 알겠네요! 압축된 파일을 그저 확인하려고만 했으니.. 이상한 문자열이 뜨는게 당연했습니다.
#> mv log log.gz
#> gzip -d log.gz
mv 명령어를 이용해 파일 확장자를 gz 로 바꾸고 gzip -d 를 이용해 gzip을 풀어줍니다. 그리고 내용을 확인해보면...!
??? 그래도 여전히 내용이 깨져있습니다..
어찌된 일인지 다시 file 로 log를 확인해보니 이번엔 bzip2으로 압축된 파일이라네요... 다시 bzip2 확장자인 bz2로 바꾸고 압축을 풀어봅니다.
혹시 몰라 file 로 확인해보니 이번엔 gzip으로 압축되어 있답니다. 역시 압축에 압축으로 패스워드를 꽁꽁 숨겨둔 것 같습니다.
노가다가 필요한 작업이군요...
여러번의 gzip, bzip2, 심지어 tar 까지 거쳐서 드디어 ASCII 형태의 파일을 찾을 수 있었습니다. 이것이 끝이기를..
cat 명령어로 확인해보니 드디어 다음 레벨의 패스워드를 획득할 수 있었습니다.
next level password : 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL
'War Game > bandit' 카테고리의 다른 글
Bandit level14 (0) | 2017.04.03 |
---|---|
Bandit level13 (0) | 2017.04.03 |
Bandit level11 (0) | 2017.03.29 |
Bandit level10 (0) | 2017.02.23 |
Bandit level9 (0) | 2017.02.23 |