|
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
|