#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;
}
putenv = 환경변수를 PATH=/thankyouvermuch 로 설정
filter함수로 들어온 인자가
flag, sh, tmp 일때 !=0 (0이 아닌값)을 리턴한다.
if(filter(argv[1])) return 0;
출력값이 0이 아니면 return 0을한다.
인자로 flag값을 가져와야 하므로 /bin/cat flag로 가져오면되겠지만
flag가 필터링되니 와일드카드(*)로 이용해서 가져오자
'Write-Up > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] memcpy 풀이 (0) | 2021.03.25 |
---|---|
[pwnable.kr] cmd2 풀이 (0) | 2021.03.24 |
[pwnable.kr] lotto 풀이 (0) | 2021.03.24 |
[pwnable.kr] blackjack 풀이 (0) | 2021.03.24 |
[pwnable.kr] coin1 풀이 (0) | 2021.03.21 |