Computer Security

#8 Wargame bandit 6 (Level11 ~ Level13), tr,mkdir,cp,xxd,gzip,bzip2,tar,mv명령어 본문

Wargame:Bandit

#8 Wargame bandit 6 (Level11 ~ Level13), tr,mkdir,cp,xxd,gzip,bzip2,tar,mv명령어

쿠리 Kuri 2022. 7. 14. 18:30

Level11 -> Level12

Level11

다음 레벨의 비밀번호는 data.txt 파일에 저장됩니다. 
여기서 모든 소문자(a-z) 및 대문자(A-Z)가 13자리 회전되었습니다.

위 조건을 가지고 비밀번호를 알아내 보자!

 

1. ls 명령어를 살펴보니 data.txt 가 확인된다.

ls

 

2.cat data.txt 를 실행해 안에 있는 내용을 살펴보니, Gur cnffjbeq vf 5Gr8L4qetPEsPk8htqjhRK8XSP6x2RHh
이상한 문자열이 나열되어 있고 여기서 모든 소문자와 대문자가 13자리 회전되었다 한다.

cat

 

3.이 문제를 풀기 위해선 리눅스 tr 명령어가 필요하다.

 

tr 은 의 Translate characters 의 약자로 규칙에 의해 문자의 변환이나 삭제를 하는 간략한 command line 유틸리티이다.

 

기본 사용

tr 은 기본적으로 다음과 같이 "찾을문자열 변경할문자열 입력파일" 형식으로 사용할 수 있다.

tr find_character replace_character < filename
 

 

반복 문자 삭제

여러 개의 문자가 반복될 경우 -s, --squeeze-repeats 사용해서 중복을 제거할 수 있다. 예로 여러 개의 공백이 있을 경우 아래의 명령으로 하나의 공백으로 변환이 가능하다.

echo "Welcome              To             the                 jungle" | tr -s [:space:] ' ' 
 
 

소문자를 대문자로 변경

tr [:lower:] [:upper:] < sed-example.txt 

 

숫자만 출력

:alpha: 으로 모든 문자를 삭제하면 숫자만 출력된다.

echo "my ID is 73535" | tr -d [:alpha:]
 

 

non-printable 문자 삭제

개행 문자,  Ascii 가 아닌 문자등 non-printable 문자를 삭제한다.

tr -cd "[:print:]" < filename
 

 

랜덤 문자열 생성

$ tr -dc A-Za-z0-9 </dev/urandom | head -c 16

 

 

4. cat , 파이프라인 , tr 명령어를 이용해 data.txt 파일을 바꾸어 주자!

cat,pipe,tr

 

 

5.위 비밀번호를 가지고 bandit12 에 접속하면 성공!

bandit12


Level12 -> Level13

bandit12

 

다음 레벨의 비밀번호는 반복적으로 압축된 파일의 16진 덤프인 data.txt 파일에 저장됩니다. 
이 수준의 경우 mkdir을 사용하여 작업할 수 있는 /tmp 아래에 디렉터리를 만드는 것이 유용할 수 있습니다. 예: mkdir /tmp/myname123. 
그런 다음 cp를 사용하여 데이터 파일을 복사하고 mv를 사용하여 이름을 바꿉니다(맨페이지 읽기!)

data.txt 안에 있다는데 여러번 압축되어 있다한다.

그러니, 새로운 폴더를 만들어서 거기에 압축을 풀어보자.

 

이 문제를 풀기 위해 알아야할 리눅스 개념

-mkdir 디렉토리 생성 명령어이다.

 

-cp 명령어 copy 복사 명령어이다.

 

-xxd 명령어

 

바이너리 데이터를 16진수로, 16진수 데이터를 바이너리 데이터로 변환해주는 명령어이다.

 

옵션 

-a :하나의 null line을 '*"dmfh eocj

-b :dump가 이진법(0과1)로 출력됨

-c :행(line)당 출력되는 열(column)의 갯수 설정

-E :오른쪽 문자열을 ASCII 에서 EBCDIC로 변경

-g :출력시 group으로 묶이는 byte의 갯수를 설정

-h :사용가능한 명령을 요약해 출력하고 종료

-i :C언어에서 사용할수 있는 형식으로 출력

-l :설정된 길이 byte 만큼만 출력

-p :주소나 ASCII없이 hexdump 내용만 출력

-r :16데이터를 바이너리 데이터로 변환

-s :설정된 위치에서 부터 hexdump함. 위치 또는 +위치는 파일의 시작부터의 위치를 나타내고 위치는 파일의 끝에서 부터의 위치를 나타냄

-u :hex를 소문자 대신 대문자로 출력

-v :xxd의 버전을 출력

 

 

mv : move의 줄임말로 파일이나 디렉토리를 이동 시킬때 사용하는 명령어

 

mv [파일명]  [이동할경로].(확장자)

 

gzip 압축 풀기

gzip -d [파일명].gz

 

bzip2 압축 풀기

bzip2 -d [파일명].bz

 

tar 압축 풀기

tar -xvf [파일이름].tar

 

 

 

 

 

1.일단 mkdir 명령어로 godongsan 디렉토리 생성하고 그 안에서 data.txt를 풀어보자.

mkdir

 

 

2.cp 명령어를 통해 data.txt 를 godongsan 디렉토리안에 넣어준다.

cp

 

 

3.cd 명령어를 통해 godongsan 디렉토리 안에 접근하고 그안에 있는 data.txt 파일을 살펴보자.

cd

헥스덤프 형태의 모양이 보인다...

 

 

 

4.xxd 명령어의 -r 옵션을 이용해 바이너리로 바꾸어 주자

xxd

 

 

5.gzip 로 압축된 파일이라 한다. mv 명령어를 이용해 gz로 확장자를 바꾸고 풀어준다.

mv, gzip -d

 

 

 

6.bzip2 로 압축되어있다 한다. 확장자 바꾸고 또 풀어준다.

file

 

 

 

7.gzip 로 압축되어있다 한다. 확장자 바꾸고 또 풀어준다.

gzip

 

 

 

8.tar 로 묶여있다 한다. 확장자 바꾸고 또 풀어준다.

tar

 

 

 

 

9.이 행동을 쭉 반복하면 된다.

PW

 

 

 

10.위에서 얻은 비밀번호로 bandit13에 접속하면 성공!

bandit13

Comments