프롤로그
bandit 문제풀이
저번 비밀번호는 morbNTDkSW6jIlUc0ymOdMaLnOlFVAaj 였다
grep, sed
문제
다음 레벨로 가는 비밀번호는 data.txt에 저장되어 있는데, 비밀번호는 millionth 단어 뒤에 있습니다.
grep
텍스트 검색에 사용되는 명령어로, 파일이나 명령어의 출력에서 특정 패턴을 검색하고, 그 패턴이 포함된 줄을 출력한다. 정규 표현식을 사용하여 복잡한 것도 검색이 가능하다.
- -i : 대소문자 구분 X
- grep -i 'pattern' filename
- -r / -R : 하위 디렉토리 까지 검색
- grep -r 'pattern' /path/to/dir
- - l : 패턴이 포함된 파일 이름만 출력
- grep -l 'pattern' *
- - n : 해당 패턴이 포함된 줄 번호까지 출력
- grep -n 'pattern' filename
- -v : 패턴이 포함되지 않은 줄을 출력
- grep -v 'pattern' filename
- -c : 패턴이 포함된 줄의 개수 출력
- grep -c 'pattern' filename
풀이과정
우선 접속부터 하자.
ssh bandit6@bandit.labs.overthewire.org -p 2220
morbNTDkSW6jIlUc0ymOdMaLnOlFVAaj
ls
cat data.txt
를 해보면?
엄...여기서 비밀번호를 찾아야 하는 것이다.
그냥 millionth 바로 뒤에 있다고 했으니까, grep으로 millionth을 검색하면 해당 줄을 출력을 해줄 것이다.
grep "millionth" data.txt
바로 비밀번호가 나왔다
정답
비밀번호는 dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEc 이다
이대로 끝낼려고 했는데, 뭔가 문듯 생각이 들었다. 만약에 저 millionth 뒤에 있다고 하지만 줄이 달랐다면? 운이 너무 안 좋아서, 다음 줄로 넘어갔을 경우에는 다음줄을 출력해야하는데?
아까 속성중에 줄번호 출력 기억하는 가? -n 이다.
grep -n "millionth" data.txt
저 줄은 1457번째 줄에 있구나. 만약에 다음줄에 있다면? 1458번을 출력하면 되지 않겠는가!
sed
파일이나 텍스트 스트림을 한 줄씩 처리하여 편집할 수 있는 강력한 명령어.. 주로 텍스트 조작, 변환, 삭제 작업에 사용되며, 파일을 수정하거나 표준 입력으로 받은 데이터를 처리할 수 있다.
sed [옵션] '명령어' [파일명]
사용법은 이런데,
딱 원하는 줄만 출력을 하고 싶다면?
sed -n '1457p' data.txt
저거 -n 속성 안 붙이니까
어후 난리났었다.
-n 속성이 무얼해주는건가?
기본 출력을 억제하고 p 명령어에 의해서만 출력되도록 한다. 그러니까 저렇게 출력되는 거 막고, 1457p로 1457번째만 print 하게 해준다는 의미.
sed -n '1p' filename
이런 느낌으로 쓰는 거다.
출처
https://overthewire.org/wargames/bandit/bandit8.html
'bandit' 카테고리의 다른 글
[2024/bandit] bandit level9 -> level10 Write-up (0) | 2024.11.10 |
---|---|
[2024/bandit] bandit level8 -> level9 Write-up (0) | 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 |
[2024/bandit] bandit level4 -> level5 Write-up (0) | 2024.11.09 |