php
php://filter协议封装器
在PHP里,php://filter 是一种协议封装器,它允许你在读取或写入数据流时对数据进行过滤处理。
基本概念 :
php://filter 可让你在不修改原始文件的情况下,对文件内容实施过滤操作。它能够在读取文件内容时进行编码转换、压缩、加密等处理,也可在写入文件时对数据进行预处理。语法 :
1 | 用于读取文件时过滤数据: |
- 常用过滤器 :
- string.toupper:把所有字符转换为大写。
- string.tolower:把所有字符转换为小写。
- string.strip_tags:去除 HTML 和 PHP 标签。
- convert.base64-encode:对数据进行 Base64 编码。
- convert.base64-decode:对 Base64 编码的数据进行解码。
php://input协议封装器
php://input 是 PHP 中一个用于访问原始请求体的只读流。它允许开发者获取未经处理的 POST 数据,无论这些数据是来自表单提交、文件上传还是其他类型的请求。
特点 :
只读流:php://input 是一个只读的数据流,意味着你只能从中读取数据,而不能写入。
原始数据:它提供的是原始的、未经处理的请求体内容。这与 $_POST 数组不同,后者是经过 PHP 处理后的数据。
不依赖内容类型:无论请求的 Content-Type 是什么(如 application/x-www-form-urlencoded、multipart/form-data、application/json 等),php://input 都能读取数据。
使用场景 :
处理非表单数据:当需要处理 JSON、XML 或其他非标准表单格式的数据时,php://input 非常有用。
避免 PHP 处理:在某些情况下,你可能希望直接获取原始数据,而不经过 PHP 的默认处理(如自动填充 $_POST 数组)。
文件上传:虽然不常用于文件上传,但 php://input 也可以用来读取上传的文件内容。
示例 :
1 | ?url=php://input |
system(编程函数)
system编程语言(如C/Python)中执行系统命令的函数。- C语言:
1 | system("ls -l"); // 执行命令并返回状态码 |
- Python:
1 | import os |
- 风险:使用不当可能导致命令注入漏洞(如用户输入未过滤时)。
eval(Shell/编程语言)
- 用途:将字符串作为命令执行(动态解析)。
Shell 示例:
1 | command="ls -l" |
- 渗透测试场景:
- 在脚本中动态构造命令(需谨慎处理不可信输入,避免代码注入)
评论区
欢迎你留下宝贵的意见