【pwnable.kr】cmd1
阿新 • • 發佈:2017-07-10
strstr blog pre += 其中 函數 /tmp har cmd
最近的pwnable都是linux操作系統層面的。
ssh [email protected] -p2222 (pw:guest)
首先還是下載源代碼:
#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=/fuckyouverymuch"); if(filter(argv[1])) return 0; system( argv[1] ); return 0; }
其中有一句putenv,其實我現在也沒明白有什麽用,不過有一個提示,有一個新的文件夾/tmp/fuckuverymuch/。
還是可以看見有很多東西的。
現在根據源代碼可以分析出的是,程序調用system()函數執行用戶輸入的參數命令,但其中不能包括“flag”、“sh”、“tmp”字樣。
就是說把這三個東西藏起來就好。
其實,system命令的默認PWD環境變量應該是與這個程序的PWD環境變量相同,這個環境變量是什麽,就是默認“./”執行的文件夾目錄,一般是根據程序調用的bash窗口目錄來的。
我們可以通過寫一個bash腳本,通過system執行這個腳本來運行。
比如我在/tmp文件夾下寫了一個叫p4nda的腳本,內容是
cat /home/cmd1/flag
然後我選擇在bash進入/tmp目錄下後,執行/home/cmd1/cmd1程序,這樣程序的PWD環境變量就是/tmp,這樣system的PWD環境變量也是/tmp
在執行system(‘./p4nda‘)就可以了。
還需要執行一條chmod 777 ./p4nda
操作流程如下
進入/tmp目錄:cd /tmp
然後寫文件:vi p4nda
然後修改可執行權限 chmod 777 ./p4nda
最後,執行 /home/cmd1/cmd1 "./p4nda"
【pwnable.kr】cmd1