文件包含所用协议实战

news/2024/9/20 3:53:04/ 标签: 渗透, 安全, 文件包含, php

目录

第一题:input

代码

解题过程

第二题:input

源码

解题过程

第三题:filter

源码

解题过程

第四题:zip

源码

解题过程


第一题:input

代码

php"><meta charset="utf8">
<?php
error_reporting(0);
$file = $_GET["file"];
if(stristr($file,"php://filter") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){exit('hacker!');
}
if($file){if ($file!="http://www.baidu.com") echo "tips:flag在当前目录的某个文件中";include($file);
}else{echo '<a href="?file=http://www.baidu.com">click go baidu</a>';
}
?>

解题过程

这里过滤了一些协议,但是没有过滤php://input这样的一个协议

这里就用php://来读取并执行命令

这里用bp抓包,然后修改传参方式后post传入你要执行的php代码

这里是先查看了一下文件路径,发现flag文件

 然后读取文件,这里系统是windows使用type来进行读取,成功读出flag

第二题:input

源码

php"><?php
show_source(__FILE__);
include('flag.php');
$a= $_GET["a"];
if(isset($a)&&(file_get_contents($a,'r')) === 'I want flag'){echo "success\n";echo $flag;
}

解题过程

这里是要想办法让程序走到if条件语句里面,也就是要读一个a变量并且使用file_get_contents读这个a然后a里面的内容是I want flag

我们使用php://input来传值,抓包传值

第三题:filter

源码

php"><meta charset="utf8">
<?php
error_reporting(0);
$file = $_GET["file"];
if(stristr($file,"php://input") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){exit('hacker!');
}
if($file){include($file);
}else{echo '<a href="?file=flag.php">tips</a>';
}
?>

解题过程

这里过滤了很多协议,但是没有过滤php://filter所以直接读,由于读出来的是base64编码所以要解码

php">http://127.0.0.1/test/include_file.php?file=php://filter/read=convert.base64-encode/resource=flag.php

第四题:zip

源码

php">//index.php
<meta charset="utf8">
<?php
error_reporting(0);
$file = $_GET["file"];
if (!$file) echo '<a href="?file=upload">upload?</a>';
if(stristr($file,"input")||stristr($file, "filter")||stristr($file,"data")/*||stristr($file,"phar")*/){echo "hick?";exit();
}else{include($file.".php");
}
?>
<!-- flag在当前目录的某个文件中 -->
//upload.php
<meta charset="utf-8">
<form action="upload.php" method="post" enctype="multipart/form-data" ><input type="file" name="fupload" /><input type="submit" value="upload!" />
</form>
you can upload jpg,png,zip....<br />
<?php
if( isset( $_FILES['fupload'] ) ) {$uploaded_name = $_FILES[ 'fupload' ][ 'name' ];         //文件名$uploaded_ext  = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);   //文件后缀$uploaded_size = $_FILES[ 'fupload' ][ 'size' ];         //文件大小$uploaded_tmp  = $_FILES[ 'fupload' ][ 'tmp_name' ];     // 存储在服务器的文件的临时副本的名称$target_path = "uploads\\".md5(uniqid(rand())).".".$uploaded_ext;if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" || strtolower( $uploaded_ext ) == "zip" ) &&( $uploaded_size < 100000 ) ) {if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {// Noecho '<pre>upload error</pre>';}else {// Yes!echo "<pre>".dirname(__FILE__)."\\{$target_path} succesfully uploaded!</pre>";}}else {echo '<pre>you can upload jpg,png,zip....</pre>';}
}?>

解题过程

这里过滤了input和filter和data,但是这里有一个上传文件,并且可以上传zip文件。同时这里可以使用zip协议。我们先上传我们的一句话木马

压缩

上传

zip解压,再include包含,成功

 


http://www.ppmy.cn/news/1519122.html

相关文章

《JavaEE进阶》----1.<JavaEE进阶可以学到什么>

本篇博客会讲到 一、JavaEE进阶学习内容&#xff1a; 1.框架的学习&#xff1a;Spring、Spring Boot、Spring MVC、MyBatis 2.大项目实践 3.源码阅读 二、JavaEE简介 B/S架构web开发流程 web前端开发&#xff08;了解&#xff09; web后端开发&#xff08;重点&#xff09; 三、…

Spring Boot 动态定时任务:实现与应用详解

目录 引言定时任务的基本概念Spring Boot 中的定时任务简介 3.1 使用@Scheduled注解实现简单定时任务动态定时任务的实现思路 4.1 基于ScheduledExecutorService的实现4.2 基于Spring的TaskScheduler的实现4.3 使用数据库存储任务配置动态定时任务的高级应用 5.1 动态启动与停止…

Spring Boot(八十七):集成opencc4j实现中文简繁转换

1 opencc4j简介 OpenCC4J是OpenCC的Java版本,OpenCC是一个开源的简体字到繁体字转换工具,它支持多种转换配置,包括字符转换、短语替换等。OpenCC4J可以用来将简体字文本转换为繁体字文本,它是一个基于Java的开源库,可以方便地在Java项目中使用。 特点如下: 严格区分「一…

力扣3273.对Bob造成的最少伤害

力扣3273.对Bob造成的最少伤害 贪心 考虑每个敌人对答案的贡献对于敌人AB&#xff1a;先杀A所受伤害为tA * dA (tA tB) * dB 先杀B所受伤害为tB * dB (tA tB) * dA因此如果tA * dB < tB * dA就先杀A class Solution {public:long long minDamage(int power, vector&…

深度学习100问29:rnn语言模型与传统的语言模型有何不同

嘿&#xff0c;你知道 RNNLM 和传统语言模型有啥不一样吗&#xff1f; 传统语言模型就像个记性不太好的小伙伴。比如那种 n-gram 语言模型&#xff0c;它只能记住前面几个词&#xff0c;再多就不行啦&#xff0c;就像脑袋里的小抽屉只能装那么点东西。 但 RNNLM 可不一样&a…

HTTP 缓存

一、概述 1.HTTP缓存的基本原理是将Web资源&#xff08;如HTML,CSS,JavaScript&#xff0c;图片等&#xff09;保存在客户端或中间代理服务器上&#xff0c;后续的请求可以直接使用客户端或代理服务器上缓存的资源&#xff0c;而不必重新从服务器上获取。 2.HTTP缓存分为强制…

基于python的人力资源管理系统/基于django的OA系统的设计与实现

摘 要 随着当今社会的发展&#xff0c;时代的进步&#xff0c;各行各业也在发生着变化&#xff0c;比如人力资源管理这一方面&#xff0c;利用网络已经逐步进入人们的生活。传统的人力资源管理&#xff0c;都是员工去公司查看部门信息、招聘信息&#xff0c;这种传统方式局限性…

k8s Failed to delete cgroup paths

问题 Aug 26 10:29:27 bjm1 systemd[1]: Stopping libcontainer container 6b55a1165ba1f974ee460d84832a4ee1df0ea36899498120c997cce518c2e7e0... Aug 26 10:29:37 bjm1 dockerd[152737]: time="2024-08-26T10:29:37.453518079+08:0

E. Sheep Eat Wolves

https://codeforces.com/gym/104869/problem/E 赛时队友想贪心&#xff0c;贪不了一点&#xff0c;我想了数学办法每次都送固定的发现送过去就不满足了 赛后补&#xff0c;暴力做O&#xff08;n4) 至少要几次才能把安全所有羊送到对岸去 考虑最短路,bfs,用数组存下所有状态 …

dbc转换成excel

‌要将DBC文件转换为Excel格式&#xff0c;可以使用Canoe软件进行导出。‌ 使用Canoe软件将DBC文件导出为Excel格式的具体步骤如下&#xff1a; 打开Canoe软件&#xff0c;并在项目工程中加载或创建一个DBC文件。在主菜单中选择“文件”>“导出”>“数据库”选项。在打…

C++ 两线交点程序(Program for Point of Intersection of Two Lines)

示例图 给定对应于线 AB 的点 A 和 B 以及对应于线 PQ 的点 P 和 Q&#xff0c;找到这些线的交点。这些点在 2D 平面中给出&#xff0c;并带有其 X 和 Y 坐标。示例&#xff1a; 输入&#xff1a;A (1, 1), B (4, 4) C (1, 8), D (2, 4) 输出&#xff1a;给定直…

百度文库文章-暂存下-------题 目: 链式简单选择排序

题 目: 链式简单选择排序 初始条件&#xff1a; 理论&#xff1a;学习了《数据结构》课程&#xff0c;掌握了基本的数据结构和常用的算法&#xff1b; 实践&#xff1a;计算机技术系实验室提供计算机及软件开发环境。 要求完成的主要任务: &#xff08;包括课程设计工作量…

点儿企业规范

常见命名风格介绍 大驼峰&#xff1a;所有单词首字母都需要大写&#xff0c;UserController小驼峰&#xff1a;除了第一个单词&#xff0c;其他单词首字母大写&#xff0c;userController蛇形&#xff1a;用下划线 _ 作为单词间的分隔符&#xff0c;一般小写&#xff0c;user_…

阿里云Ubuntu系统安装/简单使用Kafka

一、安装kafka 1.下载安装包 1.1下载地址 https://kafka.apache.org/downloads 注意&#xff1a; 版本可以随意选择&#xff0c;我们选择版本为2.4.1 2.压缩文件上传/解压 2.1上传 2.2解压文件 #解压文件指令 tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/ #创建软…

Linux网络:TCP UDP socket

Linux网络&#xff1a;TCP & UDP socket socket 套接字sockaddr网络字节序IP地址转换bzero UDP socketsocketbindrecvfromsendto TCP socketsocketbindlistenconnectacceptsendrecv 本博客讲解 Linux 下的 TCP 和 UDP 套接字编程。无论是创建套接字、绑定地址&#xff0c;还…

【算法基础实验】图论-Dijkstra最短路径

理论知识 边的放松 边的放松&#xff08;Edge Relaxation&#xff09;是图算法中的一个关键操作&#xff0c;主要用于解决最短路径问题。它的核心思想是在遍历图的过程中&#xff0c;通过比较和更新路径的长度&#xff0c;逐步找到从起点到每个顶点的最短路径。 边的放松过程…

使用 Pandas 进行数据可视化:全面指南(六)

在数据分析的过程中,数据的可视化是一个至关重要的环节。通过图形展示数据,不仅能够帮助我们直观地理解数据,还能够揭示数据背后的规律和趋势。Pandas 作为 Python 生态系统中强大的数据分析库,不仅提供了数据处理和分析的功能,还内置了方便易用的可视化方法。本文将详细介…

AD19基础应用技巧:捕捉对象功能的讲解鼠标”绿色十字”大光标、小光标切换

AD PCB 中心点捕捉功能&#xff1a; 线段、圆、边框中心点捕捉。 有时候不想要鼠标自动捕捉中心点怎么办&#xff1f; 关于Altium Designer 20 的捕抓功能的讲解&#xff08;https://blog.csdn.net/weixin_44599693/article/details/126177841&#xff09; ——- AD PCB画板…

服务器上部署Wordpress:Docker技术教程

今天在三丰云免费服务器上进行部署测试&#xff0c;这款不错的免费服务器配置为1核CPU、1G内存、10G硬盘、5M带宽&#xff0c;给人惊喜。三丰云免费服务器的性能稳定&#xff0c;让我可以尽情发挥技术的魔力。 Docker是一种轻量级容器技术&#xff0c;而Wordpress则是广受欢迎…

C++国密SM2算法加解密的使用

目录 效果 在线校验 代码实现参考 项目 下载 效果 加密字符串:lxw 123abcD 2024-09-01:12:00加密后信息:042E82EE8ACE2BD56FA71DC6A0C34190627AA365F8EEE6261903BEE327A85EB5E1D6E78F2D79AD6F6DC9E45C0829625DC3165BB78BD897F99044A640F930653747939CF9D5A10C8216F945A559…