OverTheWire: Bandit 데이터 변환 (Level 12 → Level 13)

Fordsec·2023년 4월 2일
post-thumbnail

  1. Level 12 -> Level 13으로 넘어가는 문제이다.
  1. 그 다음 비밀번호는 data.txt에 있다.

그런데 data.txt는 hexdump된 file이라고 한다.

어떤 일련의 반복적으로 압축된 파일인데 그것을 hexdump 했다.

그리고 Level 12에서 /tmp 디렉토리에 따로 만들어서 하면 좋다고 Tip을 써놨다.

  1. 정리를 해보자면, compressed 압축한 파일은 열어보면 글씨가 저장되어 있는게 아니라 일명 바이너리 실행파일 처럼 숫자 데이터들이 들어가 있다.

16진수로 숫자 데이터가 저장되어 있는데, 그 숫자 데이터를 그대로 dump 그대로 글자로 만들어 둔게 hexdump이다.

  1. 예시를 들어보면 file 안에 숫자들이 써있는 해당 파일을 hexdump 했다는게 뭐냐면 101010 써있는 파일을 16진수로 바꿔서 f1 2f 2d 9d 이런 느낌으로 hex로 파일을 만들어 주었다. 라는 것

  1. 문제로 돌아와서 ls로 data.txt를 확인해주고, cat을 통해 파일을 읽어주었다.

위에서 말한 대로 16진수로 데이터가 적혀져 있는걸 볼 수 있다.

이것을 바이너리 파일로 바꾸고, 그게 압축된 파일이고, 그 압축된 파일을 해제해서 문제를 풀어나갈 예정이다.

그런데 반복적으로 압축되어 있기 때문에, 1번 2번이 아니라 여러번 해둔 것이다.

그러면 그걸 압축풀기를 계속 해야 되는데, 그러기 위해서는 /tmp 디렉토리에 사용할 작업 디렉토리를 만들어 두고, 거기에 해당 파일을 옮겨두고, 거기서 작업을 할 예정이다.

  1. mkdir으로 /tmp/sh 를 만들어 주었고, cp를 이용해 data.txt를 /tmp/sh/에 복사해주었다.

cd /tmp/sh로 디렉토리 이동을 해주었고, ls를 입력하니 이동한 디렉토리에 data.txt가 보이는 모습이다.

  1. 먼저 바이너리로 복구를 해야 한다.

복구 작업에 있어서 xxd라는 커맨드를 사용해 줄 것이다.

xxd라는게 무엇인지 알기 위해 man xxd를 입력하면 볼 수 있다.

  1. xxd는 hexdump로 만들어 주는 프로그램이다.

그런데 그 작업을 역으로 할 것이다.

hexdump된 파일을 다시 복구시켜줄 거기 때문에, 어떠한 옵션을 사용해 줄 것이다.

  1. xxd 다음 -r옵션을 주고, data.txt(변경할 파일) 입력한 뒤, 파일로 저장할 것이기에 >를 입력하고, bandit 이라는 이름으로 파일을 생성하였다.

ls를 입력해서 리스트를 보면 bandit 파일이 생긴것을 볼 수 있다.

  1. file 커맨드를 이용해 어떤 파일인지 확인해본 결과, 압축된 파일이라고 뜨는걸 볼 수 있다.

다양한 압축 기법들이 있다. 압축 알고리즘에는 한가지만 있는게 아니라 많은 방법들이 있다.

그중에 우리가 변경한 bandit 파일은 gzip으로 압축이 된 파일이다. 라고 되어 있다.

gzip으로 압축이 되어 있으니, gzip으로 압축을 해제 해야 한다.

그래서 bandit 확장자를 gzip 확장자로 바꿔 주어야 한다.

  1. mv 커맨드를 이용하여, bandit파일을 bandit.gz으로 변경 하였다.

gzip의 확장자 명은 .gz으로 이루어져 있다.

ls로 리스트를 확인해보니 bandit.gz 파일이 생긴걸 볼 수 있다.

  1. 압축을 해제해 줘야 한다. gzip의 압축푸는 커맨드는 gunzip (파일)을 입력하면 된다.

ls 통해 보면 .gz가 아닌 bandit으로 되어 있는걸 볼 수 있다. 압출이 해제 된것이다.

  1. 어떤 파일 형태로 이루져 있는지 file (대상파일) 입력하여 살펴보았더니, 그전에는 gzip 이었지만, 이번에는 bzip2으로 되어 있는걸 볼 수 있다.

이번에는 bzip2를 압축 해제해 줘야 한다.

그러면 그 전에 했던 행동과 똑같이 우선 이름을 바꿔 줘야 한다.

  1. bzip2의 확장하는 .bz2이다. ls를 통해 잘 변경된 것을 볼 수 있다.

  1. bzip2 압축을 해제 하기 위해서는 bzip2 다음 -d라는 옵션을 넣어줘야 한다. 다음 (파일이름)을 입력하면 ls를 통해 살펴보니 bandit으로 압축이 해제 된것을 볼 수 있다.

위와 동일하게 file bandit으로 살펴보니 이번에는 gzip으로 되어있다.

이제 슬슬 감이 올 것이다. 계속 이런식으로 진행을 해주면 된다.

  1. 위와 똑같이 진행해주었으니 설명은 건너뛰겠다. 압축 해제 후 살펴보니 새로운게 나왔다.

tar으로 압축이 된 것이다.

  1. 이름을 .tar로 변경 후 압축 해제 커맨드는 tar -xf옵션을 주고 뒤에 파일 이름을 적으면 된다.

ls를 통해 압축 해제 되었는지 보면 tar은 압축 해제 될때 기존파일이 사라지지 않고, data5.bin으로 파일이 나온다.

  1. file으로 data5.bin이 어떤 형식인지 살펴보니 이것도 tar형태로 이루어져 있다.

  1. mv로 data5.bin을 data5.tar으로 변경을 해주고, tar압축 해제를 똑같이 해주었다.

이번에는 data6.bin이 나왔다.

  1. 파일 형식을 살펴보니 bzip2가 나왔다. 위에서 했듯이 동일하게 반복해주면 된다.

  1. bzip2 압축 해제 방법은 위에서 다뤘기에 설명은 생략한다.

ls통해서 보니 data6라는게 나왔다.

  1. 이번에는 tar이다.

  1. tar을 압축 해제 했더니 이번에는 gzip이다.

  1. gzip압축 해제를 하니 이번에는 ASCII text이다.

이제는 더이상 압축을 해제 하는게 아니라 아스키 텍스트 파일 즉 글자가 들어가 있는 파일이다.

  1. 이렇게 다음으로 넘어갈 비밀번호를 알아낼 수 있었다.

  1. 성공적으로 bandit13으로 로그인이 잘 되었다.

https://youtube.com/@Certa6

제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)

Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.

profile
Penetration Tester | ROK NIS 2025 APEX | ROKAF CERT

0개의 댓글