write-ups/pwnable.kr

pwnable.kr cmd2 write up

2017. 7. 5. 14:47

pwnable.kr cmd2 write up 

H3X0R팀 소속 BoB 6기 ch4n3



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

이 문제를 계속 고민하다가 같은 반 친구의 도움을 받아서 풀 수 있었다. ( 참고 url : http://lclang.tistory.com/29 ) 친구가 help 를 눌러서 명령어들을 보라고 했었는데 이렇게 쉬운 방법이 있었다. 구글에 cmd2 문제 write up을 검색하면 정말 복잡하고 어려운 방법으로 풀던데 그에 반해 이 풀이는 굉장히 쉬운 것 같다. 


이 문제를 풀 수 있도록 도와준 c2w2m2에게 작은,,,,감사,,,인사,,,드립,,,니다,,,,^^



여기보면 command 라는 명령어가 있다.



-p 옵션으로 cat 명령어를 실행하면 될 것 같다. -p 옵션의 설명을 보면 기본 PATH값으로 명령어를 사용할 수 있을 것 같다. 



풀어따



굉장히 간단했다. 





'write-ups > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] passcode write up  (0) 2017.10.09
pwnable.kr coin1 write up  (0) 2017.07.07
pwnable.kr blackjack write up  (0) 2017.07.05
pwnable.kr cmd1 write up  (0) 2017.07.05
pwnable.kr mistake write up  (0) 2017.07.04