

ls -l로 파일을 확인한 뒤에 flag 파일을 읽어보려 했으나 거절당했다.
그래서 cmd1.c 파일을 읽어보았다.
#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;
}
filter() 함수에서 flag, sh, tmp를 사용하는 것을 막고 있었다.
이를 피하기 위해서는 와일드카드를 이용하면 된다.
https://ko.linux-console.net/?p=2244
Linux에서 와일드 카드를 사용하여 파일 이름을 일치시키는 10 가지 실용적인 예
Linux에서 와일드 카드를 사용하여 파일 이름을 일치시키는 10 가지 실용적인 예 와일드 카드 (메타 문자라고도 함)는 다른 문자를 나타내는 기호 또는 특수 문자입니다. ls 명령 또는 rm 명령과 같
ko.linux-console.net

flag를 무사히 읽어냈다.

무사히 해결했다!