#include <stdio.h>
#include <string.h>

int filter(char* cmd){
    int r=0;
    r += strstr(cmd, "=")!=0;
    r += strstr(cmd, "PATH")!=0;
    r += strstr(cmd, "export")!=0;
    r += strstr(cmd, "/")!=0;
    r += strstr(cmd, "`")!=0;
    r += strstr(cmd, "flag")!=0;
    return r;
}

extern char** environ;
void delete_env(){
    char** p;
    for(p=environ; *p; p++)    memset(*p, 0, strlen(*p));
}

int main(int argc, char* argv[], char** envp){
    delete_env();
    putenv("PATH=/no_command_execution_until_you_become_a_hacker");
    if(filter(argv[1])) return 0;
    printf("%s\n", argv[1]);
    system( argv[1] );
    return 0;
}

필터링이 추가되었다.

그런데 '/'만 쓸 수 있다면 cmd1과 동일하게 풀 수 있다.

echo를 이용하자.

image

Capture the Flag

image

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

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

+ Recent posts