文件包含所用协议实战

目录

第一题: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 ) ) {// No
            echo '<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包含,成功

相关推荐
AI服务老曹3 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
网络安全King4 小时前
华为 网络安全 认证
安全·web安全
网络安全-老纪4 小时前
网络安全-js安全知识点与XSS常用payloads
javascript·安全·web安全
API_technology5 小时前
电商API安全防护:JWT令牌与XSS防御实战
前端·安全·xss
Tipray20065 小时前
天 锐 蓝盾终端安全管理系统:办公U盘拷贝使用管控限制
安全
坚定信念,勇往无前9 小时前
Spring Boot 如何保证接口安全
spring boot·后端·安全
数造科技9 小时前
紧随“可信数据空间”政策风潮,数造科技正式加入开放数据空间联盟
大数据·人工智能·科技·安全·敏捷开发
winfredzhang10 小时前
Python实战:Excel中文转拼音工具开发教程
python·安全·excel·汉字·pinyin·缩写
网安加云课堂10 小时前
课程分享 | 安全系统建设的挑战与解决方案
网络·安全·web安全
源码宝11 小时前
医院安全(不良)事件上报系统源码,基于Laravel8开发,依托其优雅的语法与强大的扩展能力
安全·不良事件上报·医院不良事件管理