攻防世界PHP2

news2024/11/16 13:46:21

1、打开靶机链接http://61.147.171.105:49513/,没有发现任何线索

2、尝试访问http://61.147.171.105:49513/index.php,页面没有发生跳转

3、尝试将访问 尝试访问http://61.147.171.105:49513/index.phps

index.phpindex.phps 文件之间的主要区别在于它们的文件扩展名。

  1. index.php: 这是一个标准的 PHP 文件,通常用于编写 PHP 代码。当用户访问 index.php 文件时,Web 服务器会解释其中的 PHP 代码,并将结果发送给用户的浏览器。PHP 文件可以包含 HTML、CSS、JavaScript 以及服务器端的 PHP 代码。

  2. index.phps: 这个文件名可能是由开发人员自定义的,它的扩展名 .phps 是一种特殊的命名约定,通常用于显示 PHP 源代码而不是执行它。如果用户访问 index.phps 文件,Web 服务器通常会直接将文件内容发送给浏览器,而不会解释其中的 PHP 代码。这对于演示和学习目的可能会有用,但不建议在生产环境中使用这种方式,因为它会暴露服务器端的代码。

总之,index.php 是一个标准的 PHP 文件,用于执行 PHP 代码,而 index.phps 可能用于显示 PHP 源代码。

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

补充知识:

1、urldecode为解码和urlencode为编码

2、$_GET本身自带一次urldecode解码,即浏览器对url本身有一个检测,对于输入的中文、日文、俄文、和一些特殊字符进行解码,对于字母、数字等合法字符不会进行解码。 

3、urldecode()函数为php解码            

4、所以我们如给直接给参数传参admin会杯第一个if过滤掉。又考虑由于浏览器会对GET参数进行一次URL解码,加上PHP源码中的urldecode($_GET[id])有对可变参数进行一次解码,总共会给参数进行2次解码。考虑先将参数admin先进行编码两次

对于字母a进行urldecode编码之后为%61,在对%进行urldecode编码之后为%2561

所以参数输入id=%2561dmin,这样的话浏览器先对参数编码一次为%61dmin,然后参数传入PHP服务器后为%61dmin,所以代码中的第一个if判断结果为false如下:

"admin"===$_GET[%2561dmin]

===(全等运算符):=== 运算符执行严格比较,它不会进行类型转换。
只有在两个操作数的值相等且类型也相同时,=== 运算符才返回 true,否则返回 false。
在严格比较中,值和类型都必须相同才会被视为相等。

例如:var_dump(1 === "1"); // 输出 bool(false)

然后$_GET[id] = urldecode($_GET[id])中urldecode再一次编码为了admin,跳到第二个if函数执行判断为true,获取flag

$_GET[%61dmin] == "admin"

==(相等运算符):== 运算符执行松散比较,它会在比较之前尝试将操作数转换为相同的类型。
如果两个操作数的值相等,那么 == 运算符返回 true,否则返回 false。
在松散比较中,类型不同的值可能会被视为相等。
例如,字符串 "1" 和整数 1 在使用 == 运算符比较时会被视为相等。

var_dump(1 == "1"); // 输出 bool(true)

总结:

1、尝试在url后面+inedx.php或index.phps,看页面变化

2、浏览器会对用户传入的参数进行urldecode解码,只会进行一次,并且直接将解码后的参数传给服务器php源码中

3、”==“ 是相等运算符,比较值相等,不比较类型;"===" 是全等运算符,值与类型都比较

4、urldecode为解码,urlencode为编码

5、参考:URL特殊字符编码对照表_bce6b8a5e6598e8-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1658424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

libcity 笔记:添加自定义dataset

假设我们把libcity/data/dataset/trajectory_dataset.py复制一份到libcity/data/dataset/dataset_subclass/GeolifeDM_dataset.py&#xff0c;里面内容不变&#xff0c;只是把class的名字换了 那其他需要修改哪些内容&#xff0c;使得这个dataset生效呢 libcity/data/dataset/d…

【Vue】vue中将 html 或者 md 导出为 word 文档

原博主 xh-htmlword文档 感谢这位大佬的封装优化和分享&#xff0c;亲测有用&#xff01;可以去看大佬&#x1f447;的说明&#xff01; 前端HTML转word文档&#xff0c;绝对有效&#xff01;&#xff01;&#xff01; 安装 npm install xh-htmlword导入 import handleEx…

uniapp开发的小程序toast被键盘遮挡提示内容无法完全显示问题解决

文章目录 问题描述问题解决参考链接&#xff1a; 问题描述 在开发抖音小程序后&#xff0c;当用户提交反馈后&#xff0c;调用了系统的toast来显示是否提交成功&#xff0c;结果被系统的键盘给盖住&#xff0c;无法显示完全。 即&#xff0c;简单来说&#xff1a;Toast会被弹…

DI/DO/AI/AO混合分布式BACnet IO控制器助力智慧城市

智慧城市建设浪潮中&#xff0c;钡铼电子的BL207 BACnet边缘计算远程I/O控制器正以其独特的技术优势&#xff0c;成为推动城市智能化转型的关键力量。智慧城市不仅仅是概念上的创新&#xff0c;它需要坚实的技术支撑来实现资源的高效利用、环境的可持续发展以及居民生活的便捷与…

Java二叉树征服手册:从新手村到数据结构王者

前情提要&#xff1a;Java二叉树秘技&#xff1a;从零构建至优化大师&#xff0c;玩转算法王国 文章目录 七. 代码示例与分析1. 插入操作的代码示例2. 前序遍历的代码示例3. 删除操作的代码示例 八. 性能优化与注意事项内存管理优化内存使用内存分配 时间复杂度分析常见问题与避…

《大数据分析-数据仓库项目实战》学习笔记

目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…

图神经网络实战(9)——GraphSAGE详解与实现

图神经网络实战&#xff08;9&#xff09;——GraphSAGE详解与实现 0. 前言1. GraphSAGE 原理1.1 邻居采样1.2 聚合 2. 构建 GraphSAGE 模型执行节点分类2.1 数据集分析2.2 构建 GraphSAGE 模型 3. PinSAGE小结系列链接 0. 前言 GraphSAGE 是专为处理大规模图而设计的图神经网…

第十篇:数字堡垒:操作系统安全深度解析与实战指南

数字堡垒&#xff1a;操作系统安全深度解析与实战指南 1 *引言 1.1 数字世界的守护者 在遥远的比特海中&#xff0c;有一座名为“操作系统”的数字堡垒&#xff0c;它守护着我们的数据宝藏&#xff0c;确保每一次计算的航行都能安全抵达彼岸。然而&#xff0c;这片海域并非风…

Python中使用嵌套for循环读取csv文件出现问题

如果我们在使用嵌套循环来读取 CSV 文件时遇到了问题&#xff0c;可以提供一些代码示例和出现的具体错误&#xff0c;这样我可以更好地帮助大家解决问题。不过&#xff0c;现在我可以给大家一个基本的示例&#xff0c;演示如何使用嵌套循环来读取 CSV 文件。 问题背景 我需要读…

socket实现TCP UDP

1、socket通信建立流程 1.1、创建服务端流程 使用 socket 函数来创建 socket服务。 使用 bind 函数绑定端口。 使用 listen 函数监听端口。 使用 accept 函数接收客户端请求。 1.2、创建客户端流程 使用 socket 函数来创建 socket 服务。 使用 connect 函数连接到 socke…

YOLOv5-7.0改进(三)添加损失函数EIoU、AlphaIoU、SIoU、WIoU、MPDIoU、NWD

前言 损失函数的改进一直是涨点的重要技巧&#xff0c;本篇博客将使用六个不同损失函数对算法进行改进&#xff0c;并绘制出改进结果对比图~ 往期回顾 YOLOv5-7.0改进&#xff08;一&#xff09;MobileNetv3替换主干网络 YOLOv5-7.0改进&#xff08;二&#xff09;BiFPN替换…

连续31年稳健增长,73.25%分红率再创新高,伊利的实力是什么?

文 | 螳螂观察 作者 | 易不二 4月29日&#xff0c;伊利股份发布2023年年报及2024年一季报。 年报显示&#xff0c;2023年&#xff0c;伊利实现营业总收入1261.79亿元&#xff0c;归母净利润104.29亿元&#xff0c;双创历史新高&#xff0c;实现连续31年稳健增长。公司拟每10…

腾讯云一年99元服务器,2核2G4M服务器1年99元

近日&#xff0c;腾讯云推出了一项令人瞩目的优惠活动&#xff1a;其2核2G4M的云服务器&#xff0c;现在仅需99元即可享用一年&#xff01;这一价格无疑在市场上引起了广泛关注&#xff0c;成为了众多企业和个人用户的首选。腾讯云服务器性价比是很高的&#xff0c;我的使用体验…

【漏洞复现】Apahce HTTPd 2.4.49(CVE-2021-41773)路径穿越漏洞

简介&#xff1a; Apache HTTP Server是一个开源、跨平台的Web服务器&#xff0c;它在全球范围内被广泛使用。2021年10月5日&#xff0c;Apache发布更新公告&#xff0c;修复了Apache HTTP Server2.4.49中的一个路径遍历和文件泄露漏洞&#xff08;CVE-2021-41773&#xff09;。…

Docker部署Metabase

文章目录 Docker安装MetabaseCentOS7安装Docker获取最新的 Docker 镜像启动Metabase容器在Metabase初始化时查看日志访问Metabase Metabase 的 ClickHouse 驱动程序安装环境简介删除容器创建容器下载click house驱动放入驱动重启容器将元数据库连接到 ClickHouse报错解决 Docke…

6份不用辞职就能赚钱的副业,上班族必看!

在这个经济浪潮中&#xff0c;生活成本的上升与工资增长的缓慢形成了鲜明对比。对于许多上班族来说&#xff0c;寻找额外收入的途径显得尤为迫切。 今天&#xff0c;就让我们一起探索那些适合在业余时间开展的副业&#xff0c;为你的财务自由之路添砖加瓦。 1. 闲鱼二手手机售卖…

Zip压缩归档库-libzip介绍

1.简介 libzip是一个C库&#xff0c;用于读取、创建和修改zip格式的压缩文件。它支持从zip文件中读取、写入、添加和删除文件&#xff0c;还支持密码保护的zip文件。libzip是跨平台的&#xff0c;可以在多种操作系统上使用&#xff0c;包括Linux、Windows和macOS。 常用接口介…

5月9日作业

1&#xff0c;创建一对父子进程&#xff1a;父进程负责向文件中写入 长方形的长和宽子进程负责读取文件中的长宽信息后&#xff0c;计算长方形的面积。 1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #include <stdlib.h> 5 #…

10. Django Auth认证系统

10. Auth认证系统 Django除了内置的Admin后台系统之外, 还内置了Auth认证系统. 整个Auth认证系统可分为三大部分: 用户信息, 用户权限和用户组, 在数据库中分别对应数据表auth_user, auth_permission和auth_group.10.1 内置User实现用户管理 用户管理是网站必备的功能之一, D…

【ETAS CP AUTOSAR工具链】RTA-OS基本概念与开发流程

RTA-OS基于早期ETAS操作系统的成熟技术&#xff0c;迄今为止&#xff0c;已在全球超过3.5亿个ECU中使用。RTA-OS是一个可静态配置的抢占式实时操作系统(RTOS)&#xff0c;它常被用于资源受限但有着高性能要求的方案中。内核的实现不仅遵循了AUTOSAR R3.x、R4.0、R4.1、R4.2、R4…