728x90

Mommy! what is PATH environment in Linux?

#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;
}

코드가 간단해서 빨리 풀었다.

strstr함수는, 

dojang.io/mod/page/view.php?id=371

 

C 언어 코딩 도장: 44.3 문자열 안에서 문자열로 검색하기

이번에는 문자열 안에서 문자열로 검색하는 방법을 알아보겠습니다. strstr 함수는 문자열 안에서 문자열을 검색하며 string (find) string에서 따왔습니다(string.h 헤더 파일에 선언되어 있습니다). strs

dojang.io

자세한건 위에서 읽어보면 되고, 우리가 생각해야하는건 flag, sh, tmp라는 문자열이 검색되면 (cmd에서) strstr함수는 1을 리턴한다. 따라서 flag, sh, tmp를 쓸수 없다. 

근데 선배가 가르쳐준게 있었는데 파일이름뒤에 *를 붙이면 뒤에 긴 이름은 생략할 수 있다.

 

입력한 값은 system(여기에)들어가는데, /bin/cat flag라는 구문을 넣어주면 된다.(사실 넣어준다는 표현보다는 cmd1이 실행되는 동안 실행시켜준다 가 맞는 표현같다.)

strstr함수를 우회하려면  /bin/cat fla*를 보내면 될듯.

mommy now I get what PATH environment is for :)

728x90

'pwnable > pwnable.kr' 카테고리의 다른 글

[pwnable.kr] blukat  (0) 2020.10.12
[pwnable.kr] random  (0) 2020.10.09
[pwnable.kr] passcode  (0) 2020.10.08
[pwnable.kr] mistake  (0) 2020.10.03
[pwnable.kr] lotto  (0) 2020.09.23

+ Recent posts