프롤로그
bandit 문제풀이
저번 비밀번호는 dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc
uniq, sort, |
문제
다음 단계로 가는 비밀번호는 data.txt 파일에 저장되어 있는데, 딱 한 번만 발생하는 유일한 라인에 저장되어 있다(?)
sort
파일의 내용을 정렬하는 데 사용된다. 기본적으로 sort는 텍스트 파일의 줄을 기준으로 정렬하며, 다양한 옵션을 사용하여 정렬 방식을 세부 조정할 수 있다.
sort [옵션] [파일명]
이렇게 사용할 수 있는데,
옵션을 좀 보자.
-n : 숫자대로 정렬한다.
sort numbers.txt #기본 정렬
sort -n numbers.txt #숫자 정렬
원래는 텍스트 기반 정렬이라서 숫자가 있을 시 애매해졌는데, 숫자 정렬만 할 거라면 -n 을 켜줘야한다.
-r : 역순 정렬
거꾸로 정렬 시킨다. reverse.
-u : 중복제거(unique?)
중복을 제거한다고 한다.
이렇게 중복인 것들은 제거가 됐다.
uniq
중복된 줄을 제거하거나 중복 횟수를 표시할 때 사용, 연속된 중복만을 감지하기 때문에 sort를 사용하여 정렬 후에 uniq를 사용한다면 뭐가 몇 개 나왔는지 알 수 있다.
uniq [옵션] [입력 파일] [출력 파일] #출력파일을 생략하면 그냥 출력
그냥
uniq numbers.txt
를 한다면, 아까
sort -u uni.txt
랑 별차이가 없는 느낌이다.
-c : 개수 출력
uniq -c numbers.txt
를 해줘야 각 각 몇 개씩 있는지 개수를 출력해준다.
-d : 중복된 줄만 출력
-u : 중복되지 않는 줄만 출력
-i : 대소문자 구분 x
풀이과정
가장 먼저 해야할 것은 접속부터
ssh bandit6@bandit.labs.overthewire.org -p 2220
dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc
ls
그러면
이렇게 data.txt 파일이 저번처럼 똑같이 하나 있다.
sort를 하면 정렬이 되고, uniq는 중복횟수를 출력을 해주니까, 일단 sort로 정렬을 먼저 해준 후에, uniq로 개수를 출력해준다. 다만 이때 중요한 점은, -u로 중복을 제거해버리면 uniq로 넘어갈 때 1개씩 밖에 없을 것이니까 조심해주고,
uniq의 속성중에 개수 출력하는 -c 또는 중복되지 않은 것만 출력하는 -u를 이용하면 바로 나올 것이다.
sort data.txt | uniq -c
저렇게 하면 개추 출력이라고 했으니까
저기 1개있는 거 가 비밀번호일것이다. -u로 다시 출력해보면
sort data.txt | uniq -u
비밀번호가 나왔다.
정답
비밀번호는 4CKMh1JI91bUIZZPXDqGanal4xvAg0JM 이다.
에필로그
이때 xargs 로 처리하려고 했다
sort data.txt | xargs uniq -c
- uniq는 표준 입력을 줄 단위로 처리하기 때문에, sort의 출력을 파이프(|)를 통해 직접 연결하는 것이 적절하지만,
- xargs는 명령어에 인수를 전달하는 도구로, 줄 단위로 데이터를 처리하는 uniq와는 적합하지 않다.
이렇기 때문에
안 되더라.
출처
https://overthewire.org/wargames/bandit/bandit9.html
'bandit' 카테고리의 다른 글
[2024/bandit] bandit level10 -> level11 Write-up (0) | 2024.11.16 |
---|---|
[2024/bandit] bandit level9 -> level10 Write-up (0) | 2024.11.10 |
[2024/bandit] bandit level7 -> level8 Write-up (1) | 2024.11.10 |
[2024/bandit] bandit level6 -> level7 Write-up (0) | 2024.11.10 |
[2024/bandit] bandit level5 -> level6 Write-up (0) | 2024.11.10 |