-
Pwnable.kr #4 cmd1Wargame Site/Pwnable.kr 2019. 4. 9. 15:59
다음으로 접근한 문제는 "CMD1" 이었다.
우선 자아정체성부터 찾자
'ls -l' 를 통해 하위목록을 확인해보니 전형적인 Pwnable 문제의 구조같았다.
other 의 권한으로 접근할 수 있는 것은 cmd1.c 의 소스보기와 cmd1 의 실행권한이고,
cmd1 에 group 에 setGUID 가 설정되어있는 것을 토대로 flag 의 파일을 읽어오는 문제이다.
소스안에서 putenv 의 PATH 를 통해 환경변수를 설정한 것을 알 수 있었다.
하지만, 딱봐도 저런 디렉터리는 없을 것 같다.
역시나 없다. 그렇다면 어떻게 접근해야할까?
우선 우리가 'cat', 'ls' 라는 명령어를 입력했을 때 일어나는 일을 이해해볼 필요가 있다.
명령어의 위치를 살펴보기 위해 'which ls', 'which cat' 을 입력하면
각각의 명령어의 본래 위치가 나오는 것을 볼 수 있다.
둘 다 /bin 하위에 있는 것을 알 수 있다. 하지만, 컴퓨터 내에서 어떻게 cat 이라는 단어를 /bin/cat 이라고 탐지할까?
export 를 통해서 환경변수를 살펴보면 금새 해답을 찾을 수 있다.
위의 사진에서 bin 이라는 PATH 환경변수가 보인다.
바로 이 PATH 라는 환경변수에서 탐색을 하기 때문에 명령어로 인식할 수 있는 것이다.
하지만, 이 문제에서는 환경변수를 아예 초기화하고 존재하지 않는 곳으로 설정해놓았기 때문에 /bin 을 명시해주어야 한다.
동시에 flag, sh, tmp 라는 글자가 필터링 되어있어 flag 입력을 우회해야 해결된다.
flag 는 *(0글자 이상 대체) 또는 ?(1글자 대체) 로 우회할 수 있다!!
심볼릭 링크를 이용해서 sh 뺏어오기
'Wargame Site > Pwnable.kr' 카테고리의 다른 글
Pwnable.kr #5 cmd2 (0) 2019.04.11 Pwnable.kr #3 bof (0) 2019.03.08 Pwnable.kr #2 collision (0) 2019.02.24 Pwnable.kr #1 fd (0) 2019.02.24 댓글