본문 바로가기

Write-Up/pwnable.kr

[pwnable.kr] cmd2 풀이

#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