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 |