#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;
}
저번 문제에서 필터링 추가
/bin/cat flag를 써야하는데 flag, / 필터링된다
flag는 와일드카드로 우회해주고
나머지는 쉘스크립트를 이용해
$(echo /)bin$(echo /)cat fl*로 쓰면될것같다
sql injection에서 이렇게 필터링 되는 문제를 많이 봐왔다.
아스키코드로 필터링을 우회해주자
/는
아스키코드 8진수 57번에 해당한다.
'Write-Up > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] blukat 풀이 (0) | 2021.03.26 |
---|---|
[pwnable.kr] memcpy 풀이 (0) | 2021.03.25 |
[pwnable.kr] cmd1 풀이 (0) | 2021.03.24 |
[pwnable.kr] lotto 풀이 (0) | 2021.03.24 |
[pwnable.kr] blackjack 풀이 (0) | 2021.03.24 |