Level 8→Level 9의 목표는 data.txt에 저장되어 있으며 한 번만 보이는 라인의 패스워드를 알아내는 것이다.
나는 이것을 풀 때 엄청 헷갈렸다. 처음엔 grep명령어를 사용하여 풀고자 하였다. 아무리 찾고 생각해도 grep 옵션을 무엇을 사용해야 할지 몰라서 조언을 구했다.
sort 명령어와 uniq 명령어를 이용하라고 하였는데 나는 둘 다 모르는 명령어였다. 구글링 하지 말고 그냥 써보라고 해서 써보았더니 sort 명령어는 정렬이 되는 것을 알 수 있었고 uniq는 몰랐지만 반복되는 것을 하나만 남기고 제거해주는 것을 알 수 있었다.
우리는 그러면 data.txt에 많은 내용이 들어있고 반복되고 있으므로 sort 명령어를 사용하여 정렬을 해주되 우리가 찾아야 하는 것은 반복되는 문자열이 아닌 유일한 문자열이므로 uniq의 옵션을 찾아야 한다.
-u 옵션을 사용하여 명령어를 실행시키면 이처럼 비밀번호를 알아낼 수 있다.
UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR가 바로 bandit Level 9의 비밀번호이다.
sort 명령은 사용자가 지정한 파일의 내용을 정렬하거나, 정렬된 파일의 내용을 병합할 때 사용할 수 있다.
옵션 | 설명 |
-n | 라인의 각 필드를 비교하는 대상을 숫자로 한정 |
-f | 영어를 정렬할 때, 대소문자 구별안함 |
-r | 출력 순서를 역순으로 |
-b | 앞에 붙는 공백 무시 |
-t | 필드 구분자 지정 |
-m | 정렬된 파일을 병합 |
-u | 정렬후, 중복행 제거 |
-o | 저장할 파일명을 명시, 명시하지 않으면 화면에 출력 |
옵션을 사용하지 않으면 그냥 순서대로 정렬된다.
uniq 명령어는 중복된 내용의 행이 연속으로 있으면 하나만 남기고 삭제한다.
옵션 | 설명 |
-c | 같은 라인이 몇번 나오는지를 표시 |
-d | 중복되어 나오는 라인 중 한 라인만 표시 |
-D | 중복되는 모든 라인을 보여준다 |
-N | 필터링은 무시할 라인을 정한다 시작라인부터 N번째 라인까지는 검사하지 않는다 |
-i | 중복 라인을 한라인으로 생각하고 출력한다 |
-u | 중복 라인이 없는 것만 보여준다 |
-w | N번째 문자까지만 비교대상으로 하여 uniq 명령을 수행 |
-s | N번째 문자까지만 비교대상에서 제외하고 uniq 명령을 수행 |
-f | N번째 필드를 비교대상에서 제외하고 uniq 명령을 수행 |
출처: websecurity.tistory.com/80
파이프(|)는 앞에 실행한 명령어의 출력 결과를 뒤에 실행하는 명령어의 입력 값으로 넣어주는 원리이다.
일종의 필터링이라고 볼 수 있다.
출처: https://gracefulprograming.tistory.com/92 [Peter의 우아한 프로그래밍]
'Mentoring' 카테고리의 다른 글
[멘토링][리눅스]overthewire : bandit Level 9→Level 10 / strings 명령어 (0) | 2020.05.17 |
---|---|
[멘토링][c언어]네 번째 수업 (0) | 2020.05.16 |
[멘토링][리눅스]overthewire : bandit Level 7→Level 8 / grep 명령어 (0) | 2020.05.15 |
[멘토링][리눅스]overthewire : bandit Level 6→Level 7 (0) | 2020.05.15 |
[멘토링][리눅스]overthewire : bandit Level 5→Level 6 / find 명령어 (0) | 2020.05.15 |