Mentoring

[멘토링][리눅스]overthewire : bandit Level 8→Level 9 / sort 명령어 & uniq 명령어, 파이프(|)

seomj 2020. 5. 16. 02:29

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의 우아한 프로그래밍]