cgy12306

[pwnable.kr] cmd2 본문

Wargame/pwnable.kr

[pwnable.kr] cmd2

cgy12306 2020. 1. 27. 17:58

[cmd2]


#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와 비슷하지만 필터링이 많이 걸려있다.

전에 풀었던 cmd1에서는 /bin/cat 명령어를 사용할때 /가 이번에는 필터링에 걸리게 된다.

bash에서는 help를 치면 사용할 수 있는 명령어들을 보여준다.

여기서 command라는 명령어를 한번 보자.

-p 옵션을 사용하게 되면 PATH 환경변수에 설정된 값을 기본으로 사용하게 된다.

이 경로를 안쳐도 된다는 말이다.

command -p cat f*를 입력하면 된다.

'Wargame > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] unlink  (0) 2020.01.27
[pwnable.kr] asm  (0) 2020.01.27
[pwnable.kr] cmd1  (0) 2020.01.27
[pwnable.kr] lotto  (0) 2020.01.27
[pwnable.kr] blackjack  (0) 2020.01.27
Comments