[RCity] RCity13 Write up
개요
Redraccoon에서 운영하는 RCity라는 워게임에 RCity13에 대한 Write up을 작성했습니다. 이번 RCity13~RCity15까지는 redraccoon에서 풀이영상을 게시해줬으니 참고하시는것을 추천드립니다.
풀이영상(Redraccooon)
해당 공격 기법들을 허가되지 않은 실제 운영 서버에서 시도하는 것은 정보통신망법에 어긋나는 행위입니다.
문제분석
1
2
3
4
5
6
라쿤시티 rcity13 유저의 홈 디렉토리에 흥미로운 바이너리가 있습니다!
자세히 분석한 뒤, 플래그를 얻어보세요.
필요한 비밀번호는 해당 유저의 "환경"을 잘 살펴보시면 나올겁니다
1
setuidm privilegesm effective user id, environment variables
문제를 보면 홈 디렉토리에 어떤 바이너리 파일이 있고 그 파일을 이용해서 플래그를 획득하는것이 목표이다. 추가로 해당 유저의 환경 즉 environment variable을 알아보라는 힌트도 주었다.
현재 디렉토리를 보니 rcity13-binary
라는 set uid가 걸린 파일이 있는 것을 확인했다.
일단 실행을 해본결과 뭔지모를 password와 명령어를 입력하라고 나와 한번 rcity13
의 패스워드를 입력하고 id
명령어를 넣은 결과 패스워드가 틀렸다고 나왔다. 다시 문제의 힌트를보면 환경을 잘 보라고하는데 환경변수는 printenv
나 env
명령어로 출력을 시킬 수 있다. 여기서 환경변수라는 것은 프로그래밍의 변수처럼 어떤 변수이름에 값이 들어가있는데 이것을 $[변수이름]
이런 명령어를 사용했을 때 해당 값이 출력이된다.
환경변수를보면 key=value
의 형태로 이루어져있고 여기서 README
라는 변수이름이 보이는데 이 변수의 값 research-setuid-its-important
가 password가 된다 솔직히 좀 뜬금없이 이게 password라 나도 조금은 이해가 가지 않지만 아무튼 이게 password이다.
여기서 명령어로 id
를 넣어줬는데 No such file or directory
라는 오류가 나오는것을 확인할 수 있다. 여기서 그냥 id
라는 명령어를 사용할 때 명령어로 인식을 못한다는것이다. 이럴때는 명령어파일의 실제 위치를 직접 실행시키면 된다. 이러한 명령어들도 사실 환경변수로 다 지정을 해두었기 때문에 아무 디렉토리에서나 ls
와같은 명령어를 사용했을 때 사용할 수 있는것이다.
which [명령어]
이 명령어를 사용했을 때 실제 명령어가 사용되는 파일의 위치를 확인할 수 있다.
다시 돌아와서 flag를 획득하도록 하겠다.
여기서 /bin/bash -p
는 쉘을 획득하고 그 쉘을 계속 유지하겠다는 명령어이다.