반응형
https://dreamhack.io/wargame/challenges/900
문제 파일 열어봤는데 c언어파일이랑 리눅스에서 열리는거 파일 두개길래 리눅스 켜봤다.
리눅스에서 접속하니까 위에처럼 파일들이 뜬다
문제에서 말한 ff랑 fs도 보임.
실행 가능한거는 chall이 있다.
int main(int argc, char *argv[]) {
char cmd[50];
char input[21];
char filter[] = {'&', ';', '|', '$', '`', '*','[', ']', '{', '}', '\\', '^', '~', '?', '#', '!'};
initialize();
system("ls -al");
printf("Input Command: \n");
scanf("%20[^\n]", input);
// filtering
for (int i = 0; i < strlen(input); i++){
for (int j = 0; j < sizeof(filter); j++){
if(input[i] == filter[j]){
printf("filtered.\n");
exit(0);
}
}
}
snprintf(cmd, 49, "(%s) > /dev/null", input);
system(cmd);
system("cat ./out");
printf("Terminated\n");
return 0;
}
메인함수는 위에 내용이다
char filter에 있는거.. 특수문자가 입력되면 필터링이 되나보다.
시험삼아 특수문자랑 특수문자 아닌거랑 두개를 넣어보았다.
특수문자를 입력한거는 예상한거랑 똑같이 filtered가 출력되었다.
그냥 문자열을 넣은거는 뭔.. 뭐가 다르냐며.. 물어보네 아마 ./out 에 저장되어 있는 말인거같다.
파일이 뭐가 다른지 확인하는 명령어를 사용해봤는데
마찬가지로 명령어에 상관없이 다 그냥 똑같은 문자열만 출력된다.
저 what's diffferent가 출력되기 전에
snprintf를 하는데 뭔지 몰라서 찾아보니 버퍼에 입력하는거라고 한다.
그래서 안나오는 듯??
어떡해야되지 모르겠는..
그래서 계속 찾아보다가 ./out파일은 출력되니까 그냥 이쪽으로 리다이렉션 시키면 될까 싶어서 명령어 쳤는데
오 된다
반응형
'학회_공부해요 > 워게임' 카테고리의 다른 글
[H4CGM] Write up - Hello, Postman (1) | 2024.03.19 |
---|---|
[Dreamhack] Write up - likeb64 (1) | 2024.02.27 |
[Dreamhack] Write up - Type c-j (0) | 2024.02.06 |
[Dreamhack] Write up - simple-operation (0) | 2024.02.06 |
[Dreamhack] Write up - set-int (0) | 2024.01.23 |