diff는 두 파일을 비교하는 명령어. 비슷한 명령어는 cmp가 있는데 diff가 좀 더 상세하게 잘 설명해준다.
[리눅스 명령어] diff 파일 비교 명령어
diff [differences] diff명령어는 differences의 약자로 두 파일 사이의 내용을 비교하는 명령어입니다. cm...
blog.naver.com
옵션 사용법은 이 글을 참고했다.
지금 bandit17 문제에서 해결해야 하는 건 passwords.new랑 passwords.old 파일을 비교해서 딱 다른 한 줄을 뽑아내는 거.
옵션 -c를 주면 이렇게 정확히 어디 부분이 다른지를 보여주고
-d는 딱 다른 부분만 보여준다.
passwords.new에 있는 게 새로운 비밀번호니까 bandit18@localhost로 연결할 때 이 비밀번호를 입력해주면 된다.
근데 연결에 성공했다가 connection to localhost closed라는 말이 뜬다. 다음 문제에서 이 문제를 해결해야 하기 때문에 이어서 바로 bandit18을 풀어보자.
패스워드는 readme에 있는데, 누가 .bashrc에 있는 내용을 바꿔서 계속 접속이 종료되는 상황이다.
bashrc가 뭘까? bash가 쉘이라는 것은 알고 있는 사실이고, bashrc는 bash에서 작업할 때마다 수행되는 파일이라고 한다. 예를 들어.. 내가 어떤 툴을 사용하고 싶어서 그걸 실행했을 때 바로 그 프로그램으로 연결해주는 역할?이라고 생각하면 된다. 지역적인 시스템 설정 파일에 해당하고, /etc/bashrc는 전역 환경 설정 파일! 어쨌든 누군가가 지금 이 파일을 수정했다는 거구나.
사실 전에 이 문제로 골머리를 앓았어서.. 이미 답을 알고 있는데, -t 옵션이 수도-tty 할당을 강제하는 기능을 가지고 있어서 ssh bandit18@localhost -t /bin/sh 이렇게 하면 쉘이 강제로 실행된다. 여기서 비밀번호를 확인할 수 있을 것이다.
이건 진짜.. 쉘에 대한 개념이 잘 잡혀있지 않으면 절대 못 푸는 문제라 지금은 몰라도 다시 천천히 풀어보면 되니까 속상해할(?) 필요가 없다!
-t 옵션 꼭 기억하기
'Pwnable > Bandit' 카테고리의 다른 글
[Bandit Level 21->22] cron을 활용하자 (0) | 2022.02.01 |
---|---|
[Bandit Level 19->20, 20-> 21] setuid를 사용하자 (0) | 2022.01.31 |
[Bandit Level 16->17] 문제 풀이 (0) | 2022.01.14 |
[Bandit Level 13 -> 14] 비밀번호 획득 없이 SSH로 다음 단계 서버로 접속하기 (0) | 2021.06.09 |
[Bandit Level 12 - > 13] 여러번 압축된 파일 풀어주기 (0) | 2021.06.09 |
댓글