
- Level 19 -> Level 20으로 넘어가는 문제이다.
다음 레벨에 접근하기 위해서는 setuid binary를 이용해야 한다. 라고 되어있다.

- binary는 실행파일을 뜻한다.
정확하게 말하면 실행파일은 아닌데, 2진수로 된 숫자로 된 데이터 파일을 말한다.
근데 보통 바이너리라고 하면, 실행파일을 의미하기도 한다.
그럼 어떤 바이너리냐? setuid가 설정되어 있는 바이너리다.
그럼 setuid라는 권한에 대해서 알아야 한다.
setuid는 특수 권한이다.
그런데 무슨 권한이냐? setuid의 파일을 실행할 때, 그 사용자, 소유자의 권한으로 실행하게 해주는 권한이다.
예를들어서 해당 바이너리가 root권한이면, 실행하는 순간만큼은 root가 되는 것이다.

- 파일을 보면, bandit20-do라고 되어있고, -rwsr-x부분에서 s가 setuid이다.
즉, 해당 파일은 setuid가 설정되어 있다.
이 파일의 소유주는 bandit20이다.
그러니까, 이 파일을 실행할때 만큼은 bandit20의 권한으로 그 파일을 실행하는 것이다.
그럼, 요 프로그램이 어떤 프로그램인지 먼저 한번 실행을 해보자

- 실행을 해보면, 설명이 나와 있다.
다른사람으로써 어떤 명령어를 실행 할 수 있다. 라고 적혀 있다.
Example : 을 보면, ./bandit20-do뒤에 id처럼 명령어를 쓰면, bandit20의 사용자의 권한으로 실행시켜 주겠다. 라는 것이다.

- 이렇게 입력을 하면, ./bandit20-do 파일이 id명령어를 실행해 준다.
./bandit20-do 이 프로그램은 setuid가 설정되어 있기 때문에, bandit20의 권한으로 실행이 되는 것이다.
실행해 보면, UI가 bandit19로 뜨지만, 옆으로 가보면, euid=에 bandit20으로 되어있다.
euid란, 실제로 사용하는 uid이다.
그니까, bandit19니까 가장앞에 있는 uid에 bandit19라고 나와 있는 것이고,
euid는 효과가 있는, 지금 여기 적용되어 있는 uid는 bandit20이라고 볼 수 있다.
그러니까 뒤에 적은 명령어 id가 bandit20으로 실행이 되었다. 라는걸 보여주는 것이다.
그러면, ./bandit20-do 뒤에 적는 모든것들은 bandit20의 권한으로 실행이 된다는 것이다.
그러면 뒤에 어떤 명령어를 써야 할까?

- 앞에 ./bandit20-do를 적지 않고, 그냥 저런식으로 입력을 하면, 권한 에러가 발생한다.

그런데, 적고나서 실행해주면, 그 파일을 읽을 수 있게 된다.
이렇게 setuid가 잘못 설정되어 있으면, setuid를 통해서 모든 명령어를 다 처리해주면 당연히 위험할 것이다.
이게 나중에 모의해킹에서 권한 상승에 유용하게 연결이 되는 지식이다.
이번 문제는 setuid를 통해서 비밀번호를 찾는 과정이었다.

- bandit20으로 로그인을 성공적으로 하였다.
제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)
Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.