리눅스

 3916, 1/196 회원가입  로그인  
   ewqqw
   setuid 를 이용한 권한얻기 소스

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=4450 [복사]


제 권한은 제한돼 있고, run_me 라는 프로그램은 setuid가 설정되어 있어서 run_me 라는 프로그램 상에서 flag(setuid로 실행해야 하는 파일)을 알아봐야 하는데요....  환경변수가 모두 삭제되고, 밑의 변수만 남은 상태에서 어떻게 setuid를 기반으로 shell을 실행할 수 있을까요?

./run_me /bin/sh 하니깐 당연히 밑의 필터링에 걸리더라구요...

도와주세요 ㅠㅠ


#include <stdio.h>
#include <string.h>

int filter(char *cmd) {
        if (strstr(cmd, "f")) return 1;
        if (strstr(cmd, "sh")) return 1;
        if (strstr(cmd, "tmp")) return 1;
        return 0;
}

extern char **environ;
int main(int argc, char *argv[], char *envp[]) {
        char **p;

        printf("I am king the Godzo...\n");
        printf("I will let you execute a command again.\n");
        printf("However, I am much stronger than Tracer.\n");

        for (p=environ; *p; p++)
                memset(*p, 0, strlen(*p));

        putenv("PATH=/uri_mercy_gaemotham");

        if (filter(argv[1])) {
                printf("caught by filter!\n");
                return 0;
        }

        system(argv[1]);
        return 0;
}

  Hit : 5127     Date : 2017/03/11 12:23



    
ewqqw ./실행파일 "cd */;head *" 하니깐 풀렸습니다.... 하하

파일이 아니라 디렉토리였네요... 그 안에 또 파일이 있었습니다...
2017/03/12