프롤로그
저번 비밀번호는 P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU 이었고, 이는
2024.03.08 - [보안 스터디/bandit] - [워게임] bandit level5 -> level6 문제 풀이
[워게임] bandit level5 -> level6 문제 풀이
프롤로그 저번 비밀번호는 lrIWWI6bB37kxfiCQZqUdOIYfr6eEeqR 이었고, 그 풀이과정은 2024.02.11 - [보안 스터디/bandit] - [워게임] bandit level4 -> level5 문제 풀이 [워게임] bandit level4 -> level5 문제 풀이 프롤로그
taesan-smj.tistory.com
여기서 확인할 수 있다.
전체 목록은
2024.02.04 - [보안 스터디/bandit] - [워게임] bandit 답지 정리
[워게임] bandit 답지 정리
프롤로그 비밀번호 중간중간마다 까먹을 수 있으니, 각 풀이과정과 비밀번호 정리해두는 글 Level0 -> Level1 비밀번호 : NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL 2024.02.04 - [보안 스터디/bandit] - [워게임] bandit level0 -
taesan-smj.tistory.com
여기서 확인할 수 있다.
문제
https://overthewire.org/wargames/bandit/bandit7.html
OverTheWire: Level Goal
We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> Level Goal The password for the next level is stored somewhere on the server and has all of the following properties: owned by user bandit7 owned by group ban
overthewire.org
다음 단계로 가는 비밀번호는 서버 어딘가에 저장되어 있다.
user bandit7 이 주인이고, group bandit6이고 33바이트 사이즈이다.
풀이전략
일단 이 문제를 알려면,
-rw-rw---- 이렇게 되어있는 것을 알아야한다.
첫번째 - 부분은 폴더인지 아닌지이다. 폴더라면 d로 표시되어있다.
첫번째 rw- 는 소유자의 권한이다. 읽기, 쓰기 권한은 있고 실행권한은 없다.
두번째 rw- 는 그룹의 권한이다. 읽기, 쓰기 권한은 있고 실행권한은 없다.
세번째 ---는 남은 다른 사람들인데 아무런 권한이 없는 것을 의미한다.
그니까 대충 r--r----- 이렇게 되어있는 것을 찾으란 얘기같다.
일단
find . type - f -size 33c 로 찾은 다음에 | xargs cat 을 이용하여 를 해봐서 읽으면 되지 않을까..
문제 풀이
우선 접속한다.
ssh bandit6@bandit.labs.overthewire.org -p 2220
P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU
ls 로 파일이 뭐가있는지 확인하자
와 샌즈...아무것도 없다.
그니까 이 서버 내부에 어딘가에 있다는 거니까;; 이거 좀 골치아파진다.
상위 디렉터리로 이동 (cd ..) 해서 봐보자.
서버 어딘가에 있다고 했으니, 루트 디렉터리에서 찾는 게 맞아 보인다.
cd / 로 루트 디렉터리로 이동하였고, 이제 찾아보자.
find . -type f -size 33c
되게 많다...
그러니까 이제 사용자 권한과 그룹 권한을 껴서 조건을 넣어야한다는 것이다.
find . -type f -size 33c -user bandit7 -group bandit6
유저는 bandit7, 그룹은 bandit6 조건을 이렇게 끼워넣고 찾으면
뭔가 많이 나오는데, permission denied 들도 많이 나온다. 저것들 Permission denied 들을 제거해서 찾아보자.
find . -type f -size 33c -user bandit7 -group bandit6 2>/dev/null
그러면
딱 하나가 나온다.
2>/dev/null 은 스크립트나 명령어에서 발생하는 모든 표준 에러 출력을 /dev/null 로 리다이렉트하여 실제로 보이지 않게 하는 방법이다. 즉 에러 메시지를 숨기는 것이다.
해석을 하자면 2는 표준 에러(standard error)를 나타내는 파일 디스크립터이다. 표준 출력은 1, 표준 에러는 2로 표현, 표준 입력은 0이다.
> 는 리 다이렉션. 데이터 흐름을 변경하거나 다른 대상으로 보내는 데 사용한다.
/dev/null은 연결된 모든 데이터를 버리는 역할이다. 그러니까 2번(표준에러)를 > 쓰레기통으로 라고 해석이 될 수 있다.
아무튼 파일 하나가 나왔으니까 저것을 cat으로 읽어보자.
근데, 솔직히 저거 좀 영어가 길고 귀찮은데, 파일도 하나 있겠다, 명령어를 써서 그냥 저 주소를 입력 하지 않게 해보자.
cat $(find . -type f -size 33c -user bandit7 -group bandit6 2>/dev/null)
$( .... ) 는 명령어 치환이다. find명령어가 실행되고 그 결과로 나온 것은 cat으로 들어가는 것이다.
잘 나온다.
다른 방법은 파이프를 이용하는 것인데,
find . -type f -size 33c -user bandit7 -group bandit6 2>/dev/null | xargs cat
잘 나온다.
이것은 아까 명령어를 | 파이프를 통해서 cat으로 넘겨주는 것이다.
| 를 통해 넘어온 것이 xargs에 넘어가고, 이를 cat 명령어의 인자로 전달되는 것이다.
어쨌든 비밀번호는
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
이다.
에필로그
저번에 한 번 국제드론해킹방어대회 참가했을 때 이 find를 이용해서 문제를 풀었었는데 조금씩 이해가 되고 잇는 것 같다. 이 find가 굉장히 중요하니 속성을 한 번 싹 정리하고 해보는 게 중요할 것 같다.
'보안 스터디 > bandit' 카테고리의 다른 글
[워게임] bandit level5 -> level6 문제 풀이 (2) | 2024.03.08 |
---|---|
[워게임] bandit level4 -> level5 문제 풀이 (1) | 2024.02.11 |
[워게임] bandit level3 -> level4 문제 풀이 (0) | 2024.02.11 |
[워게임] bandit level2 -> level3 문제 풀이 (1) | 2024.02.10 |
[워게임] bandit level1 -> level2 문제 풀이 (1) | 2024.02.10 |