Self-Improvement

[pwnable.kr] cmd1 풀이 본문

리버싱 기초/pwnable.kr

[pwnable.kr] cmd1 풀이

JoGeun 2020. 6. 24. 13:53

 

소스코드

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