일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- kernel
- 리눅스 커널
- 포너블
- css
- 커널
- 프로그래밍
- C++
- Bandit
- wargame
- 어셈블리어
- Pwnable.kr
- 리버싱
- 시스템
- 시스템프로그래밍
- 워게임
- 시스템해킹
- multiplexing
- radare2
- 리눅스
- 리눅스커널
- Leviathan
- 알고리즘
- C언어
- pwncollege
- 컴퓨터구조
- 시스템 프로그래밍
- 시그널
- write up
- 하드링크
- pwn.college
- Today
- Total
Computer Security
#8 Wargame bandit 6 (Level11 ~ Level13), tr,mkdir,cp,xxd,gzip,bzip2,tar,mv명령어 본문
#8 Wargame bandit 6 (Level11 ~ Level13), tr,mkdir,cp,xxd,gzip,bzip2,tar,mv명령어
쿠리 Kuri 2022. 7. 14. 18:30Level11 -> Level12
다음 레벨의 비밀번호는 data.txt 파일에 저장됩니다.
여기서 모든 소문자(a-z) 및 대문자(A-Z)가 13자리 회전되었습니다.
위 조건을 가지고 비밀번호를 알아내 보자!
1. ls 명령어를 살펴보니 data.txt 가 확인된다.
2.cat data.txt 를 실행해 안에 있는 내용을 살펴보니, Gur cnffjbeq vf 5Gr8L4qetPEsPk8htqjhRK8XSP6x2RHh
이상한 문자열이 나열되어 있고 여기서 모든 소문자와 대문자가 13자리 회전되었다 한다.
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 파일을 바꾸어 주자!
5.위 비밀번호를 가지고 bandit12 에 접속하면 성공!
Level12 -> Level13
다음 레벨의 비밀번호는 반복적으로 압축된 파일의 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를 풀어보자.
2.cp 명령어를 통해 data.txt 를 godongsan 디렉토리안에 넣어준다.
3.cd 명령어를 통해 godongsan 디렉토리 안에 접근하고 그안에 있는 data.txt 파일을 살펴보자.
헥스덤프 형태의 모양이 보인다...
4.xxd 명령어의 -r 옵션을 이용해 바이너리로 바꾸어 주자
5.gzip 로 압축된 파일이라 한다. mv 명령어를 이용해 gz로 확장자를 바꾸고 풀어준다.
6.bzip2 로 압축되어있다 한다. 확장자 바꾸고 또 풀어준다.
7.gzip 로 압축되어있다 한다. 확장자 바꾸고 또 풀어준다.
8.tar 로 묶여있다 한다. 확장자 바꾸고 또 풀어준다.
9.이 행동을 쭉 반복하면 된다.
10.위에서 얻은 비밀번호로 bandit13에 접속하면 성공!
'Wargame:Bandit' 카테고리의 다른 글
#10 Wargame bandit 8 (Level15 ~ Level17), openssl,nmap명령어, 하트블리드 취약점 (0) | 2022.07.16 |
---|---|
#9 Wargame bandit 7 (Level13 ~ Level15), ssh,리눅스 디렉토리,nc명령어 (0) | 2022.07.15 |
#7 Wargame bandit 5 (Level9 ~ Level11), string,base64명령어 (0) | 2022.07.13 |
#6 Wargame bandit 4 (Level7 ~ Level9),파이프라인,grep,sort,uniq 명령어 (0) | 2022.07.12 |
#5 Wargame Bandit 3 (Level 5 ~ Level 7) ,ls,cd,find명령어 (0) | 2022.07.11 |