1.文章难易度:【★★★】
2.文章知识点:php语法;php伪协议;ctf;
3.文 章 作 者:xiaoye
4.本文参与i春秋社区原创文章奖励计划,未经许可禁止转载!
前言
例行打卡,昨晚让一个bug弄得觉也没睡好。。果然我太菜。。本来是打算写XXE的,但是想起来了之前在一个群里讨论的ctf题目,当时那位小伙伴就说了下大概情形和大致思路,心挺痒,,但是那个题目应该是他们学校内网才能访问。没办法,那就根据他说的来自己写一道ctf题目喽。正好好久没写php了,练练手。
一、题目的还原
他大致是这么说的:有上传点,只能上传zip或者jpg/png/jpeg图片格式,上传后可以知道路径;有LFI(本地文件包含漏洞),但是包含的如果不是php文件就在后面再加上一个.php后缀;没有RFI(远程文件包含漏洞);
好吧,听起来不是很难,我们分开写,先写上传点,限制为zip&&图片格式:
indexdemo.html:
upload_filedemo.php:
核心代码:
if(($uploaded_ext == 'zip' || $uploaded_ext == 'jpg' || $uploaded_ext == 'png') && ($uploaded_type == 'image/jpeg' || $uploaded_type == 'image/png' || $uploaded_type == 'application/zip')){
move_uploaded_file($uploaded_tmp, $target_path . $target_file);
echo 'stored in' . $target_path . $target_file;
}
采用了白名单,攻击者想利用的话就基本只有解析漏洞了,但是我这是apache高版本,暂时不用考虑这块;
采用MIME验证,这块只是辅助,毕竟用户burp拦截下就可以改掉了;
$target_file = md5(uniqid().$uploaded_name) . '.' . $uploaded_ext;
文件名是md5加密的,00截断截不了,而且我这儿php也是高版本的,不用考虑;
这道题目的上传要求这样就基本满足了,送点福利,自己整理的:
这里本来想采用php二次渲染防止图片马,但是。。这样肯定不行,这道题目是让拿shell再拿flag的,你不让传咋行。。哈哈,这是后话了。
文件包含代码:
zipphp.php:
en
funct.php:
核心代码:
function get_extension($f){ //获取文件后缀
return pathinfo($f, PATHINFO_EXTENSION);
//print pathinfo($f, PATHINFO_EXTENSION);
}
function check_extension($f){ //检查文件后缀是否为php,是返回true,不是返回false
if($f == 'php'){
return true;
}else{
//$f = $f . '.php';
return false;
}
}
然后再:
if($bz){ //判断是否加.php后缀
include($file);
}else{
include($file . '.php');
}
试验下喽:
不是php 文件自动加上php后缀,平台bwapp里也有这个套路的。
好了。。累死。。题目还原好了。。开始做题吧
二、突破防御,getshell
只有LFI没有RFL,那我们之前http://bbs.ichunqiu.com/thread-15871-1-1.html?from=oschina的RFI技巧就无效了,并且LFI限制很多,目前我们只能包含已经存在的php文件,不能上传php(废话。。能上传就不用包含了。。),我们能拿到手的都是一些鸡肋。。所以洗洗睡吧。。哈哈,joke啦
php有很多伪协议:zip data php://filter php://......
等等,我们能上传zip啊。。百度之,发现了一个技巧,利用zip伪协议:
zip://目录/xx.zip%23zip里的文件
哎,我们可以把php文件放到xx.zip中,然后利用伪协议读取,然后包含它啊,说的有点乱,看操作:
写一个1.php:
然后利用伪协议读取:
我擦勒,这就结束了!做题时间和写题时间不平衡啊。。。。。。就这样吧,你把1.php写入一句话木马就拿到shell了。。总结一下,这一道题:
我们只能上传zip/图片格式------>上传zip,内含.php恶意文件------>文件包含中可用zip协议------>zip:/目录/xxx.zip%231.php可以访问到zip中的.php文件------>getshell
其实这道题还有个技巧,我们把1.zip改成jpg也可以:
总结
没啥要总结的了吧。。哈哈,欢迎交流 ,写的比较慌,有错误的地方海涵
更多安全技术、精品好文、白帽黑客大佬尽在:http://bbs.ichunqiu.com/portal.php