김승현

[OverTheWire] Bandit Level 17 → Level 18 본문

Linux/OverTheWire : Bandit

[OverTheWire] Bandit Level 17 → Level 18

kshind 2023. 2. 19. 14:03

문제

 

문제 원문

홈디렉토리에 passwords.old와 passwords.new 총 두 개의 파일이 있다고 한다. passwords.old와 passwords.new 중 한 줄의 내용이 바꼈는데 그 바뀐 게 password라고 한다. 

NOTE : 만약 이 레벨을 풀고 bandit18로 접속하려고 할 때 Byebye! 본다면 다음 그 다음 bandit19와 관련이 있다고 한다.

 

제시된 명령어

풀기 위해 필요한 명령어들 목록을 보면 다른 건 다 익숙한데 diff라는 새로운 명령어가 생겼다.

difference에서 유래된 명령어 같은데 두 파일의 차이점을 알아내야 하는 지금 필요한 명령어 같아서 구글링 해봤다.

 

diff : differences의 줄임말로 두 파일 사이의 내용을 비교하는 명령어이다.

옵션
-c : 두 파일간의 차이점 출력
-d : 두 파일간의 차이점을 상세히 출력
-r : 두 디렉토리간의 비교에 사용
-i : 대소문자 무시
-w : 공백차이 무시
-s : 두 파일이 동일한 내용을 담으면 알림

 

풀이

 

ls -al을 해보면 문제에서 말했듯이 passwords.old, passwords.new가 있는 걸 볼 수 있다.

둘 다 ASCII text이기 때문에 그냥 cat으로 볼 수 있다.

cat으로 볼 순 있지만 당연히 old와 new 파일의 비교는 힘들어 보인다... diff 명령어를 사용해보자.

diff [비교할 파일1] [비교할 파일2]

위가 기본적인 형식이고 비교할 파일들에 우리는 passwords.old와 passwords.new를 넣으면 될 것 같다.

42c42는 42번째 줄에서 다른 내용이 나왔다는 뜻이다.

810...oe8 문자열은 passwords.old에서의 내용이고 hga....Frdg 문자열은 passwords.new의 내용이다.

비교할 파일1에 들어간 게 먼저 출력되는데 이를 확인하기 위해서 passwords.new를 먼저 입력해봤다.

>>>>>>   diff passwords.old passwords.new → diff passwords.new passwords.old   <<<<<<

passwords.new를 먼저 입력하니까 new의 내용이 먼저 출력되는 걸 볼 수 있다.

 

 


다른 명령어 사용 (cmp) 

diff 명령어 말고 다양한 파일 비교 명령어들이 있는데 이번에는 cmp를 이용해보자.

cmp 명령어를 쓰면 차이가 생기는 곳이 몇 번째 byte인지 그리고 몇 번째 line인지 알려준다.

diff 명령어를 사용했을 때와 같은 line을 가리키는 걸 보니 정확한 걸 볼 수 있다. 

근데 이렇게만 해서는 password가 뭔지 알 수가 없다. 이때 vi 명령어를 사용해서 확인할 수 있다. 

vi해서 들어오게 되면 이렇게 cat 했을 때와 마찬가지로 내용을 볼 수 있다.

여기서 콜론( : )을 입력하면 커서가 좌측최하단으로 내려가면서 입력할 수 있는 상태가 된다.

여기에 set number을 입력하게 되면 각 line마다 몇 번째 줄인지 표시된다.

이렇게 42번째 줄로 가면 diff 명령어를 사용했을 때의 password와 동일한 것을 확인할 수 있다.

사실 set number을 하지 않아도 오른쪽 밑에 보면 현재 커서가 몇 번째 line인지 뜨긴 하는데

이렇게 하면서 공부가 되는 거 아닐까요?ㅎㅎㅎㅎㅎㅎㅎ vi가 진짜 나중에 가면 되게 유용한 것 같은데

이 참에 지금 공부하는 것도 괜찮은 것 같아요ㅎㅎㅎ

 


Byebye를 보려고 ssh를 써서 접속해보려고 했는데 안 된다.... port 22는 요즘 막힌다고 해서 2220으로 해봐도 안 된다.

id_rsa의 group에 read 권한이 있길래 없애려고 chmod 쓰려고 했는데 안 되고 bandit.labs.overthewire.org로 해봤는데

그거도 안 되고 내용을 복사해서 /tmp 디렉토리에 새로 작성해야 되나 했는데 tmp 디렉토리도 안 만들어져서

그냥 넘어가야겠다...ㅜ 그래도 password는 얻었으니까 된 게 아닐까..?

 

 


다음 문제

https://kshind.tistory.com/20

 

[OverTheWire] Bandit Level 18 → Level 19

문제 다음 단계로 가기 위한 password는 홈디렉토리에 있는 readme라는 파일에 있다. 근데 누군가 .bashrc를 수정해서 접속하려고 하면 바로 내보낸다고 하는 것 같다. .bashrc는 로그인할 때 실행되는

kshind.tistory.com