ctfshow——文件包含

文章目录

  • web 78——php伪协议
    • 第一种方法——php://input
    • 第二种方法——data://text/plain
    • 第三种方法——远程包含(http://协议)
  • web 78——str_replace过滤字符php
    • 第一种方法——远程包含(http://协议)
    • 第二种方法——data://,php短标签
    • 第三种方法——data://,base64编码
  • web 80——str_replace过滤关键字php和data
    • 第一种方法——日志包含
    • 第二种方法——大写PHP绕过,PHP://input
  • web 81——过滤关键字php、data和`:`,日志包含
  • web 82

web 78——php伪协议

在这里插入图片描述

第一种方法——php://input

这里不知道flag.php的文件路径,可以考虑使用php://input尝试执行php语句,获取文件路径。

	# url栏
	?file=php://input 
	# POST data
	<?php system('ls');?>

在这里插入图片描述

cat flag.php可能读取不了文件,这时候试试tac flag.php。linux tac命令是倒序读取文件,也就是从最后一行往前读取文件。

cat flag.php在源代码中显示php文件(查看源代码),tac flag.php不需要查看源代码。

在这里插入图片描述

第二种方法——data://text/plain

data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。用法:

data://text/plain,<php代码>
data://text/plain;base64,<php代码>

在这里插入图片描述

第三种方法——远程包含(http://协议)

在这里插入图片描述

架设外网服务器,使用远程包含自己服务器上的后门文件,即可获取webshell。

php伪协议总结
php伪协议

web 78——str_replace过滤字符php

在这里插入图片描述
首先,根据php特性,str_replace无法迭代过滤,只过滤一次。此处,如果用空格替换,可以直接使用双写进行绕过

第一种方法——远程包含(http://协议)

在这里插入图片描述

架设外网服务器,使用远程包含自己服务器上的后门文件,即可获取webshell。

第二种方法——data://,php短标签

既然过滤php字符串,使用data://协议,同时使用php短标签避免出现字符串php。php中代码开始标志类型(<?php ?>,<? ?>,<?= ?>,<% %>,<%= %>)

<?php @eval($_GET['cmd']);?> == <?=@eval($_GET['cmd']);?>

在这里插入图片描述

第三种方法——data://,base64编码

使用data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+ (<?php phpinfo();?>)
在这里插入图片描述

web 80——str_replace过滤关键字php和data

在这里插入图片描述
可以看到关键字phpdata被过滤,因此包含这两个关键字的php伪协议都无法用了。查看服务器的系统信息,可以发现属于nginxnginx日志的默认路径为/var/log/nginx/access.log

在这里插入图片描述

第一种方法——日志包含

通过包含日志文件,可以读取到日志文件。因此思路:日志文件记录访问者UA信息,修改UA信息为后门代码,包含就会触发后门代码

?file=/var/log/nginx/access.log
UA:<?php system('ls')?>

在这里插入图片描述
在这里插入图片描述

第二种方法——大写PHP绕过,PHP://input

在这里插入图片描述

这里对php://input的php进行大写可以绕过过滤,但是通过大写DATA不能使用data://text/plain
在这里插入图片描述

web 81——过滤关键字php、data和:,日志包含

在这里插入图片描述
这里过滤了phpdata:,基本上伪协议是用不了了,不过仍然可以使用日志包含。

?file=/var/log/nginx/access.log
UA:<?php system('ls')?>

在这里插入图片描述

web 82

linux下,默认保存session的文件路径/tmp/var/lib/php/session;Windows下session文件的路径不固定。
关于session,只要你与一个网站建立连接,网站某个文件夹下就会产生session文件,关闭浏览器或者过了一段时间,session就会失效,再次建立连接的话就会产生新的session文件。
服务器端的session文件命名如下,尝试简单爆破是几乎不可能的。
在这里插入图片描述
实际上,数据包中的cookie中有个PHPSESSID的值,服务端将sess_PHPSESSID的值进行拼接,就是当前会话session的文件名。因此我们可以使用这种方式固定session文件的文件名。
在这里插入图片描述
利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

游戏被DDOS攻击无法访问时该如何处理

游戏行业随着时代的发展有着突飞猛进的变化&#xff0c;尤其是互联网时代智能手机的普及&#xff0c;让游戏行业发展上了一个新的台阶。因为游戏带来的巨大利润&#xff0c;游戏行业一直是DDoS攻击的首选目标。 DDoS是Distributed Denial of Service的缩写&#xff0c;即分布式…

学习Android的第二天

目录 Android User Interface 用户界面 UI Android View与ViewGroup的概念 Android View android.view.View android.view.View XML 属性 android:id 属性 Android ViewGroup android.view.ViewGroup ViewGroup.LayoutParams ViewGroup.MarginLayoutParams ViewGr…

Redis核心技术与实战【学习笔记】 - 19.Pika:基于SSD实现大容量“Redis”

前言 随着业务数据的增加&#xff08;比如电商业务中&#xff0c;随着用户规模和商品数量的增加&#xff09;&#xff0c;就需要 Redis 能保存更多的数据。你可能会想到使用 Redis 切片集群&#xff0c;把数据分散保存到不同的实例上。但是这样做的话&#xff0c;如果要保存的…

java社区养老年人服务系统springboot+vue

为了帮助用户更好的了解和理解程序的开发流程与相关内容&#xff0c;本文将通过六个章节进行内容阐述。 第一章&#xff1a;描述了程序的开发背景&#xff0c;程序运用于现实生活的目的与意义&#xff0c;以及程序文档的结构安排信息&#xff1b; 第二章&#xff1a;描述了程序…

uniapp 高德地图显示

1. uniapp 高德地图显示 使用前需到**高德开放平台&#xff08;https://lbs.amap.com/&#xff09;**创建应用并申请Key   登录 高德开放平台&#xff0c;进入“控制台”&#xff0c;如果没有注册账号请先根据页面提示注册账号   打开 “应用管理” -> “我的应用”页面…

Leetcode 85. 最大矩形

题目信息 LeetoCode地址: 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目理解 该题是84题的升级版。84题给出了一个一维数组&#xff0c;即一行数据&#xff0c;每个元素是高度。而该题则是给出了二维数组&#xff0c;只需我们将每一行的高度…

太强了,AI数字人从制作到变现一次搞定

AI数字人从制作到变现 如果说GPT类大模型是我们人类的第二大脑&#xff0c;数字人就是我们人类在互联网上的第二个身体。随着 AI 的迅速发展&#xff0c;2024 年 AI 模型开始从大型语言模型向大型视觉模型转变。数字人技术作为其分支之一&#xff0c;正日益成为科技、娱乐、教…

【GAMES101】Lecture 14 15 辐射度量学

目录 辐射度量学 Radiant flux&#xff08;光通量&#xff09; intensity&#xff08;发光强度&#xff09; irradiance radiance 辐射度量学 主要讲述了物理学中的Basic radiometry (辐射度量学)&#xff0c;就是我们在之前的计算光照中没有用具体的物理单位去衡量和描述…

C++新特性 协程

本篇文章我们来讲述一下C协程 协程&#xff08;Coroutine&#xff09;是一种能够挂起个恢复的函数过程 是一种轻量级的并发编程方式&#xff0c;也称为用户级线程。它与传统的线程&#xff08;Thread&#xff09;相比&#xff0c;具有更低的开销和更高的执行效率。 协程通常运…

爬虫学习笔记-scrapy爬取汽车之家

1.终端运行scrapy startproject scrapy_carhome,创建项目 2.接口查找 3.终端cd到spiders,cd scrapy_carhome/scrapy_carhome/spiders,运行 scrapy genspider audi https://car.autohome.com.cn/price/brand-33.html 4.打开audi,编写代码,xpath获取页面车型价格列表 5.运行项目…

深度学习技巧应用35-L1正则化和L2正则在神经网络模型训练中的应用

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用35-L1 正则化和L2正则在神经网络模型训练中的应用。L1正则化和L2正则化是机器学习中常用的两种正则化方法,用于防止模型过拟合并提高模型的泛化能力。这两种正则化方法通过在损失函数中添加惩罚项来控制模型的复杂性。…

面试八股文(4)

文章目录 1.sleep和wait区别2.为什么调用start()方法会执行run()方法&#xff0c;为什么不能直接调用run()方法3.synchronized关键字4.并发编程的三个重要特性5.synchronized和volatile关键字区别6.ThreadLocal7.为什么要用线程池&#xff1f;8.实现Runnable接口和Callable接口…

课时13:变量基础_变量场景

2.1.1 变量场景 学习目标 这一节&#xff0c; 我们从 数据存储、变量场景、小结 三个方面来学习。 数据存储 数据存储 所谓的数据存储&#xff0c;我们从三方面来理解这句话&#xff1a;1、数据保存到哪里 -- 各种媒介&#xff0c;CPU、内存、磁盘、磁带、网盘...2、数据保…

react+ts+antd-mobile 动态tabs➕下拉加载

1.初始化项目 //搭建项目 npm create vitelatest react-jike-mobile -- --template react-ts//安装依赖 npm i //运行 npm run dev清理项目目录结构 安装ant design mobile ant design mobile是ant design家族里专门针对于移动端的组件库 npm install --save antd-mobile测试…

日志报错 git -c dif.mnemonicprefix=false -c core.guotepath=false 解决方法

前言: 在进行下面操作前,必须确保,你是否安装了Git。 查看Git 在命令行窗口中输入`git --version`: 如果这个命令成功显示了Git的版本信息,这表明Git已经被安装。 1. 使用Sourcetree SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端…

C++核心deque容器,stack容器,queue容器,list容器,set容器,pair ,map容器

3.deque容器 1.deque容器的基本概念 Vector容器是单向开口的连续内存空间&#xff0c;deque则是一种双向开口的连续线性空间。所谓的双向开口&#xff0c;意思是可以在头尾两端插入元素&#xff0c;但是在其头部操作效率奇差&#xff0c;无法被接受。 deque容器和vector容器最…

MongoDB索引详情

文章目录 MongoDB索引MongoDB索引数据结构WiredTiger数据文件在磁盘的存储结构 索引的分类索引设计原则索引操作创建索引查看索引删除索引 索引类型单键索引&#xff08;Single Field Indexes&#xff09;复合索引&#xff08;Compound Index&#xff09;多键索引&#xff08;M…

学成在线:采用XXL-JOB任务调度方案使用FFmpeg处理视频转码业务

分片技术方案 概述 XXL-JOB并不直接提供数据处理的功能&#xff0c;它只会给所有注册的执行器分配好分片序号&#xff0c;在向执行器下发任务调度的同时携带分片总数和当前分片序号等参数 设计作业分片方案保证多个执行器之间不会查询到重复的任务,保证任务不会重复执行 任…

机器学习-基础分类算法-KNN详解

KNN-k近邻算法 k-Nearest Neighbors 思想极度简单应用数学只是少效果好可以解释机器学习算法使用过程中的很多细节问题更完整的刻画机器学习应用的流程 创建简单测试用例 import numpy as np import matplotlib.pyplot as plt raw_data_X [[3.393533211, 2.331273381],[3.1…

Flutter实现轮播图功能

一、在pubspec.yaml中添加&#xff1a; dependencies:# 轮播图card_swiper: ^3.0.1card_swiper: ^3.0.1&#xff0c;要获取最新版本&#xff1a;https://pub-web.flutter-io.cn/packages/card_swiper/versions&#xff0c;这个里面有文档可以看&#xff0c;如下图&#xff1a;…