2018. 1. 15. 11:27, 워게임/Pwnable.kr
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 | #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 |
cmd1과 비슷하게 PATH를 바꾸고 필터링이 들어가는데 환경변수까지 싹 날려버립니다. 그런데 사실 매우 간단한 해결방법이 있는데 바로 command 명령어입니다.command 명령어는 원래 말 그대로 명령을 실행해주는 건데 거기 옵션 -p를 주면 환경 변수로 기본값을 줘서 이상한데로 바꾼 저 필터링이 무용지물이 됩니다. 또 / 필터링도 해결이 자동으로 되고요. 마지막으로 flag를 필터링하는건 f*으로 한 방에 뛰어넘을 수 있습니다.
'워게임 > Pwnable.kr' 카테고리의 다른 글
[Pwnable.kr] uaf (0) | 2018.01.15 |
---|---|
[Pwnable.kr] cmd1 (0) | 2018.01.15 |
[Pwnable.kr] lotto (0) | 2018.01.15 |
[Pwnable.kr] blackjack (0) | 2018.01.15 |
[Pwnable.kr] coin1 (3) | 2018.01.15 |
[Pwnable.kr] shellshock (0) | 2018.01.15 |
Comments