문제
Mommy! what is PATH environment in Linux?
ssh cmd1@pwnable.kr -p2222 (pw:guest)
분석
cmd1.c의 내용
#include <stdio.h>
#include <string.h>
int filter(char* cmd){
int r=0;
r += strstr(cmd, "flag")!=0;
r += strstr(cmd, "sh")!=0;
r += strstr(cmd, "tmp")!=0;
return r;
}
int main(int argc, char* argv[], char** envp){
putenv("PATH=/thankyouverymuch");
if(filter(argv[1])) return 0;
system( argv[1] );
return 0;
}
우선 환경변수 PATH의 값을 모두 없애버린다.
그리고 system(argv[1])를 실행시켜주는데
argv[1]에는 "flag", "sh", "tmp"의 문자열이 포함될 수 없다.
FL4G
argv[1]으로는 "/bin/cat flag"가 적당할 것 같다.
하지만 argv[1]이 flag는 포함할 수 없으니 tmp 폴더로 가서 'fake' 파일을 만들고 symbolic link를 걸어주면 될 것 같다!
+) 실제 pwnable.kr 서버에서는 다음과 같이 수행하면 된다.
1. /tmp 폴더에서 "~/flag"로 연결되는 'fake'파일 생성
2. 명령어 : ~/cmd1 "/bin/cat fake" 실행
'pwnable.kr' 카테고리의 다른 글
[Toddler's Bottle] memcpy writeup (0) | 2018.09.17 |
---|---|
[Toddler's Bottle] cmd2 writeup (0) | 2018.09.16 |
[Toddler's Bottle] lotto writeup (0) | 2018.09.16 |
[Toddler's Bottle] blackjack writeup (0) | 2018.09.16 |
[Toddler's Bottle] coin1 writeup (0) | 2018.09.16 |