힌트를 보면 "엄마! 리눅스의 PATH 환경은 어때?" 라고하네요.
이제 코드를 보러 가볼까요?
코드가 짧네요 main함수부터 해석해보도록 하겠습니다.
putenv를 통해서 PATH=/thankyouverymuch라는 환경변수를 추가하네요.
그 다음 filter함수를 통해서 argv[1]을 검사합니다.
filter함수를 봅시다. strstr이라는 함수가 있는데 이 함수는 앞에 있는 문자열에 뒤에 있는 문자열을 검색하는 함수입니다.
flag와 sh와 tmp가 발견되면 r이 증가하고 r을 반환시킵니다.
하지만 if문에서 이 문자들을 사용하면 종료시킵니다.
문제를 어떻게 풀어야할까요....
방법을 찾던도중 리눅스에는 와일드카드라는 기능이 있었습니다.
*이라는 문자열을 모두 출력해주는 와일드 카드를 통해
./cmd1 /cat fl*이라고 쳐보았지만 flag가 나오지 않았습니다.
이유를 찾아보던 와중 cat이라는 명령어가 bin 디렉토리 안에 있다는 것을 알고
./cmd1 "/bin/cat *"를 입력하여 문제를 풀었습니다.
짜잔~~ flag가 나왔네요
와일드카드라는 기능을 새롭게 알게 되어 기분이 좋네요.
'pwnable.kr 문제풀이' 카테고리의 다른 글
pwnable.kr blukat 문제풀이 :: 건듀의 블로그 (0) | 2019.09.23 |
---|---|
pwnable.kr cmd2 문제풀이 :: 건듀의 블로그 (0) | 2019.09.20 |
pwnable.kr lotto 문제풀이 :: 건듀의 블로그 (0) | 2019.09.20 |
pwnable.kr blackjack 문제풀이 :: 건듀의 블로그 (0) | 2019.09.20 |
pwnable.kr coin1 문제풀이 :: 건듀의 블로그 (0) | 2019.09.20 |