Post

[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을 알아보라는 힌트도 주었다.

image

현재 디렉토리를 보니 rcity13-binary라는 set uid가 걸린 파일이 있는 것을 확인했다.

image

일단 실행을 해본결과 뭔지모를 password와 명령어를 입력하라고 나와 한번 rcity13의 패스워드를 입력하고 id명령어를 넣은 결과 패스워드가 틀렸다고 나왔다. 다시 문제의 힌트를보면 환경을 잘 보라고하는데 환경변수는 printenvenv명령어로 출력을 시킬 수 있다. 여기서 환경변수라는 것은 프로그래밍의 변수처럼 어떤 변수이름에 값이 들어가있는데 이것을 $[변수이름]이런 명령어를 사용했을 때 해당 값이 출력이된다.

image

환경변수를보면 key=value의 형태로 이루어져있고 여기서 README라는 변수이름이 보이는데 이 변수의 값 research-setuid-its-important가 password가 된다 솔직히 좀 뜬금없이 이게 password라 나도 조금은 이해가 가지 않지만 아무튼 이게 password이다.

image

여기서 명령어로 id를 넣어줬는데 No such file or directory라는 오류가 나오는것을 확인할 수 있다. 여기서 그냥 id라는 명령어를 사용할 때 명령어로 인식을 못한다는것이다. 이럴때는 명령어파일의 실제 위치를 직접 실행시키면 된다. 이러한 명령어들도 사실 환경변수로 다 지정을 해두었기 때문에 아무 디렉토리에서나 ls와같은 명령어를 사용했을 때 사용할 수 있는것이다.

image

which [명령어]이 명령어를 사용했을 때 실제 명령어가 사용되는 파일의 위치를 확인할 수 있다.

다시 돌아와서 flag를 획득하도록 하겠다.

image

여기서 /bin/bash -p는 쉘을 획득하고 그 쉘을 계속 유지하겠다는 명령어이다.

This post is licensed under CC BY 4.0 by the author.