Self-Improvement
[pwnable.kr] cmd1 풀이 본문
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#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;
}
|
cs |
코드를 보게되면 putenv("PATH=/thankyouverymuch") 함수로 PATH을 초기화 시키고 /thankyouverymuch만 추가한 것이다. 그리고 인자 값을 체크해서 flag, sh, tmp 문자열을 필터링 하고 있다.
풀기위해선 간단히 절대경로로 명령어 cat를 작성하여 fla* 파일을 읽어들이면 된다.
./cmd1 "/bin/cat fla*"
'리버싱 기초 > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] uaf 풀이 (0) | 2020.07.13 |
---|---|
[pwnable.kr] cmd2 풀이 (0) | 2020.06.24 |
[pwnable.kr] lotto 풀이 (0) | 2020.06.24 |
[pwnable.kr] blackjack 풀이 (0) | 2020.06.24 |
[pwnable.kr] shellshock 풀이 (쉘숔 CVE-2014-6271) (0) | 2020.06.24 |