프롤로그
bandit 문제풀이
mktemp, hex dump,
저번 비밀번호는 7x16WNeHIi5YkIhWsfFIqoognUTyj9Q4 이다.
문제
다음단계로 가는 비밀번호는 data.txt 파일안에 들어가있다. 근데 그 파일은 여러번 압축된 파일의 16진수 덤프이다. /tmp 작업용폴더를 만들어라. 디렉터리 이름은 추측하기 어려워야하기에 mktemp -d를 이용해라. 거기다가 파일 복사한 다음에 작업해라. mv를 이용해라
와.. 문제부터 어렵냐?
mktemp
임시 파일이나 디렉터리를 만드는 명령어이다.
mktemp #임시 파일 생성
mktemp -d #임시 디렉터리 생성
-d를 붙이면 임시 폴더가 생성된다.
해당 주소로 이동하게 되면
방금 생성된 파일들 또는 디렉터리들이 있다.
이 명령어를 실행하면 /tmp/ 아래에 랜덤한 이름을 가진 디렉토리가 생성된다. 디렉토리 이름이 랜덤하므로 다른 사람이 이 디렉토리를 추측하거나 접근하기 어렵게 만들어서 보안성을 강화할 수 있다.
hex dump
16진수 덤프라고 해석이 되는데, 이는 파일의 내용을 16진수(hex)값으로 표현한 것이다. 보통 컴퓨터 파일들은 이진수로 표현이 되는데, 사람이 읽기 어렵기에 16진수로 표현한느 것이다. 이 헥사값은 바이너리 파일이나 메모리 데이터를 읽고 디버깅할 때 유용하다.
xxd
위 헥스 덤프, 즉 16진수값으로 표현된 것을 바이너리파일로 바꿔보고, 다시 바이너리 파일을 16진수로 바꿔주도록 하는 게 이 xxd명령어이다.
4865 6c6c 6f20 576f 726c 6421 0a48 6578
2064 6174 610a 0001 0203 0405 0607 0809
0a0b 0c0d 0e0f 1011 1213 1415 1617 1819
1a1b 1c1d 1e1f 2021 2223 2425 2627 2829
2a2b 2c2d 2e2f 3031 3233 3435 3637 3839
이런 헥스 데이터를 준비해놓고, 일단 이진 데이터로 바꿔보자.
xxd -r a.txt b.bin
다시 저걸, 16진수 데이터로 바꿀려면?
xxd b.bin c.txt
압축 파일
압축 종류도 여러 개 있다.
우리는 문제에서 나온 이거 tar, gzip, bzip2 세 개만 알아보자.
(1) tar
여러 파일을 하나의 아카이브로 묶는 도구이다.
자체적인 압축 기능은 없지만, bzip2이나 gzip이랑 같이 사용할 수 있다.
- -c: 새 아카이브 생성 (create)
- -v: 처리 상태 표시 (verbose)
- -f: 결과 파일 지정 (file)
- -x : 아카이브 해제(extract)
- -t : 아카이브 내용 나열(list)
- -z : gzip으로 압축
- -f : bz2로 압축
이 속성들을 이용해서 이와 같이 사용한다.
tar -cvf archive.tar file1 file2 directory/ #아카이브 생성
tar -xvf archive.tar #아카이브 해제
tar -tvf archive.tar #아카이브 목록 확인
(2) gzip
단일 파일을 압축하는 도구이다. 다만 파일 묶는 기능은 없다.
gzip filename #filename.gz 생성
gzip -d filename.gz #압축 해제
#또는
gunzip filename.gz
그래서 tar이랑 같이 쓴다면
tar -cvfz a.tar.gz file1 file2
이렇게 z를 붙이고 .gz를 붙인다.
(3) bzip2
고효율 압축이다. 높은 압축률을 제공하지만 압축/해제 속도가 좀 느리다
bzip2 filename
bzip2 -d filename.bz2
bunzip filename.bz2
아까랑 거의 유사하다.
여기도
tar -cvfj a.tar.bz2 file1 file2
이렇게 j를 붙이면 bz2 +tar 합친거다
풀이과정
일단 접속부터 하자.
ssh bandit12@bandit.labs.overthewire.org -p 2220
7x16WNeHIi5YkIhWsfFIqoognUTyj9Q4
ls
cat data.txt
일단 mktemp - d를 하고 거기에 파일을 복사해서 사용하라고 했다.
mktemp -d
cp data.txt /tmp/tmp.1y3AftHnqY
cd /tmp/tmp.1y3AftHnqY
이제 여기서 부터 작업을 진행하자.
xxd -r data.txt a.bin
file *
a.bin은 gzip으로 압축되어있다. 그래서 a.bin파일을 a.gz로 바꾸고 압축 해제를 진행하자.
mv a.bin a.gz
gzip -d a.gz
file *
다음 확인해보니까, a는 또 다시 bzip2로 압축되어있으니까, a이름을 a.bz2로 바꾼다음에, 다시 압축해제하자.
mv a a.bz2
bzip2 -d a.bz2
다음 a는 또 다시 gzip 압축이고, 아까처럼 a.gz로 바꿔준 후에 압축해제 진행하자.
mv a a.gz
gzip -d a.gz
file *
다음은 tar archive 라고 적혀있으니까, tar 파일로 바꿔주자. 그리고 아카이브 해제해준다.
mv a a.tar
tar -xvf a.tar
다시 file * 해보면
아직 tar이니까, data5.bin을 data5.tar로 바꾼 후에 다시 압축해제 하자.
data6.bin 도 마찬가지.
data8 까지 오면 c.tar이 bzip2인걸 알수있는데, bzip2으로 압축 해제하고 풀면?
아 ...아직 도... 아카이브..아..tar..
쭉 진행하니까, data8이라는 아스키파일이 나타났고
읽어보니 비밀번호가 나왔다.
정답
비밀번호는 FO5dwFsc0cbaIiH0h8J2eUks2vdTDwAn 이다.
에필로그
귀찮았다;;
어쨌거나 오늘 한국통신학회 포스터세션 발표 + 우수상 수상 + 집 도착 후 knockon 부트캠프 시험 + 블로그 글까지...
고된 하루였다.
출처
https://overthewire.org/wargames/bandit/bandit13.html
'bandit' 카테고리의 다른 글
[2024/bandit] bandit level13 -> level14 Write-up (0) | 2024.11.26 |
---|---|
[2024/bandit] bandit level11 -> level12 Write-up (1) | 2024.11.18 |
[2024/bandit] bandit level10 -> level11 Write-up (0) | 2024.11.16 |
[2024/bandit] bandit level9 -> level10 Write-up (0) | 2024.11.10 |
[2024/bandit] bandit level8 -> level9 Write-up (0) | 2024.11.10 |