OverTheWire: Level Goal: Bandit Level 6 → Level 7
[ Level 6 -> Level 7 ]
1. 소유자는 bandit7
2. 소유 그룹은 bandit6
3. 크기는 33 bytes
ls -al명령어를 사용하여 홈 디렉터리를 열어보았지만 원하는 정보를 얻지 못했다.
user bandit 7, group bandit 6, size 33c 조건을 동시에 부합하는 파일을 찾고자 했다.
find / -user bandit7 -group bandit6 -size 33c
: 이 결과 permission denied가 반복되어 2> /dev/null명령어를 추가해 프롬프트에 입력하여 실행시켰다.
명령어 find에서
- usesr 옵션 : 파일의 소유자를 찾는 역할
- group 옵션 : 파일이 속한 그룹을 찾는 역할
- size 옵션 : 파일의 사이즈를 찾는 역할
Permission denied는 표준 에러(2번 파일 디스크립터)이다.
이를 없애기 위해 사용하는 것이 Redirection이다. 이는 입출력의 방향을 지정할 때 사용된다.
/dev/null 은 리눅스의 쓰레기통이다.
따라서 2 > /dev/null 은 표준 에러를 쓰레기통으로 보내 출력하지 않는다.
파일 디스크립터는 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값이다.
0 : 표준 입력(Standard input)
1 : 표준 출력(Standard output)
2 : 표준 에러(Standard error)
cat명령어를 사용하여 해당 파일을 열어 비밀번호를 알아냈다.
- password : HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
[ Level 7 -> Level 8 ]
비밀번호는 data.txt 파일 안에 millionth 단어 옆에 있다.
ls -al명령어를 이용하여 data.txt 파일이 존재하는 것을 확인
한눈에 millionth라는 단어를 찾을 수 없어서
특정 문자열을 찾는 명령어인 grep을 이용하기로 했다.
grep millionth data.txt를 입력하면, millionth단어가 있는 행의 모든 문자열을 출력한다.
- 비밀 번호 : cvX2JJa4CFALtqS87jk27qwqGhBM9plV
[ Level 8 -> Level 9 ]
비밀번호는 data.txt 파일에 저장되어 있고, 오직 한 번만 발생하는 구절이다.
ls -al명령어를 이용하여 data.txt 파일의 존재를 확인했다.
sort명령어를 사용해 행들을 순서대로 정렬했다.
uniq 명령어를 사용해 내용의 중복을 제거하여 겹치는 부분이 없는 행만을 나타내었다.
sort명령어 : 파일의 내용을 정렬하거나, 정렬된 파일의 내용을 병합할 때 사용
-r, --reverse : 역순으로 정렬.
-k, --key=POS1 : 정해진 필드를 기준으로 정렬. ex) sort -k2 : 2번째 필드로 정렬
-u, --unique : 정렬 후 중복된 내용을 제거.
-t, --field-separator=SEP : 필드 구분자를 지정, -k 옵션으로 필드를 지정해서 사용할 때 좋다.
-f, --ignore-case : 대소문자를 구분하지 않고 정렬.
-n : 라인의 각 필드를 비교하는 대상을 숫자로 한정.
-f : 영어를 정렬할 때, 대소문자 구별 안 함.
-r : 출력 순서를 역순으로 정렬.
-b : 앞에 붙는 공백 무시.
-t : 필드 구분자 지정.
-m : 정렬된 파일을 병합.
-u : 정렬후, 중복행 제거.
-o : 저장할 파일명을 명시, 명시하지 않으면 화면에 출력.
|
uniq명령어 : 이어진 내용의 중복을 제거 (단, 이어진 중복만 제거하기 때문에 주의해야 함)
-c : 같은 열에서 중복되서 나오는지 문자열 앞에 숫자로 출력.
-d : 중복되어 나오는 라인 중 한 열 만 출력.
-D : 중복되는 모든 열을 출력.
-u : 중복 열이 없는 것만 출력.
|
- 비밀번호 : UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR
[ Level 9 -> Level 10 ]
비밀번호는 data.txt 파일 안에 있으며, 사람이 읽을 수 있는 문자열이고 '='문자가 앞에 있다.
ls -al명령어를 이용해 data.txt 파일의 존재를 확인했고, cat명령어를 이용해 내용을 살펴보았다.
strings 명령어를 사용해 파일 안에 포함된 문자열을 출력했다.
그리고 파이프와 grep을 사용해 = 문자열 뒤에 오는 텍스트만 출력했다.
strings명령어 : 실행파일의 ASCII 문자를 찾아 화면에 출력
-a (all) : 파일을 검색하고 데이터 섹션까지 검색.
-f (print file name) : 각 문자열 전에 파일명을 출력.
-n = [number] (bytes) : 찾자 & 적어도 모든[숫자]문자에서 NULL 로 끝나는 순서로 출력.
-t = {o, d, x} (radix) : 문자열의 위치를 8, 10, 16 진수로 출력.
-T = <BFDNAME> (target) : 바이너리 파일 형식을 지정.
|
- 비밀번호 : truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk
'Linux' 카테고리의 다른 글
How to Install meshlab in Ubuntu 18.04 (0) | 2023.03.03 |
---|---|
[F.T.Z] LEVEL 1, 2 (0) | 2022.05.29 |
[LINUX] Bandit : Over the wire Level 0 ~ Level 5 (0) | 2022.05.15 |
[LINUX] 리눅스 3. F.T.Z Trainer8 (시스템 해킹을 위한 리눅스 명령어) (0) | 2022.05.08 |
[LINUX] 리눅스 3. F.T.Z Trainer7 (시스템 해킹을 위한 리눅스 명령어) (0) | 2022.05.08 |