2.攻防世界PHP2及知识点

news/2025/2/3 2:06:49 标签: 网络, web安全, 安全, 网络安全, php, 代码复审

进入题目页面如下

意思是你能访问这个网站吗?

ctrl+u、F12查看源码,什么都没有发现

用kali中的dirsearch扫描根目录

命令如下,根据题目提示以及需要查看源码,扫描以phpphps、html为后缀的文件

dirsearch -u http://61.147.171.105:58249/ -e php,phps,html

知识点

/index.php

是一个常见的 PHP 脚本文件。PHP 是一种广泛用于 Web 开发的服务器端脚本语言,.php文件通常包含 PHP 代码,用于生成动态网页内容、与数据库交互、处理表单数据等。当 Web 服务器接收到对/index.php的请求时,它会执行其中的 PHP 代码,并将生成的结果以 HTML 等格式返回给客户端浏览器。例如,一个网站的用户登录系统可能就是通过index.php文件中的 PHP 代码来处理用户输入的用户名和密码,与数据库中的数据进行比对,然后根据结果决定是否允许用户登录。

服务器需要正确配置 PHP 环境,以便能够解析和执行.php文件。通常需要安装 PHP 解释器,并在服务器配置文件(如 Apache 的.conf文件或 Nginx 的配置文件)中进行相应的设置,以告诉服务器如何处理.php文件的请求。

/index.phps:

.phps文件通常是 PHP 源代码文件的一种特殊形式,主要用于提供 PHP 脚本的源代码展示或下载等用途。一般情况下,它可能包含与/index.php相同或类似的 PHP 代码,但服务器对.phps文件的处理方式可能与.php文件不同。有些服务器配置可能会将.phps文件视为纯文本文件,直接展示其源代码内容,而不是像处理.php文件那样执行其中的代码。

默认情况下,服务器可能不会像处理.php文件那样对.phps文件进行特殊的处理。如果需要对.phps文件进行特定的处理,比如将其作为下载文件提供给用户,或者对其进行语法高亮显示等,需要在服务器配置中进行额外的设置。

发现/index.phps文件,并访问

发现源码,进行代码审计

php"><?php
// 开始检查 $_GET 数组中名为 'id' 的参数是否严格等于字符串 "admin"
if("admin"===$_GET[id]) {
    // 如果严格相等,意味着参数 'id' 的值就是 "admin"
    echo("<p>not allowed!</p>");
    // 输出提示信息,表示不允许该操作
    exit();
    // 终止当前脚本的执行
}

// 对 $_GET 数组中 'id' 参数的值进行 URL 解码操作
$_GET[id] = urldecode($_GET[id]);

// 再次检查经过 URL 解码后的 'id' 参数的值是否等于字符串 "admin"
if($_GET[id] == "admin")
{
    // 如果相等,意味着经过解码后 'id' 的值为 "admin"
    echo "<p>Access granted!</p>";
    // 输出提示信息,表示访问已被授权
    echo "<p>Key: xxxxxxx </p>";
    // 输出一个密钥信息
}
?>

可以利用 URL 二次编码来绕过最初的严格比较。可以传入经过 URL 二次编码的 "admin",这样在第一次严格比较时,由于编码后的字符串与 "admin" 不相等,会通过检查。而第二步中经过 URL 解码后,就会变成 "admin",从而通过第二次非严格比较,获取flag

在 ASCII 编码中,字符 a 的十进制 ASCII 码值是 97,转换为十六进制就是 61;字符 d 的十进制 ASCII 码值是 100,十六进制为 64;字符 m 的十进制 ASCII 码值是 109,十六进制是 6D;字符 i 的十进制 ASCII 码值是 105,十六进制为 69;字符 n 的十进制 ASCII 码值是 110,十六进制是 6E。所以,字符串 "admin" 经过 URL 编码后就变成了 %61%64%6D%69%6E

再次编码,可以利用这个在线工具URL 编码/解码 - 锤子在线工具进行URL编码

通过get传参,构造payload

?id=%2561%2564%256D%2569%256E

最终得到flag


http://www.niftyadmin.cn/n/5840424.html

相关文章

C#属性和字段(访问修饰符)

不同点逻辑性/灵活性存储性访问性使用范围安全性属性(Property)源于字段,对字段的扩展,逻辑字段并不占用实际的内存可以被其他类访问对接收的数据范围做限定,外部使用增加了数据的安全性字段(Field)不经过逻辑处理占用内存的空间及位置大部分字段不能直接被访问内存使用不安全 …

C++ strcpy和strcat讲解

目录 一. strcpy 代码演示&#xff1a; 二.strcat 代码演示&#xff1a; 一. strcpy 使⽤字符数组可以存放字符串&#xff0c;但是字符数组能否直接赋值呢&#xff1f; ⽐如&#xff1a; char arr1[] "abcdef"; char arr2[20] {0}; arr2 arr1;//这样这节赋值可…

89,[5]攻防世界 web Web_php_include

进入靶场 <?php // 显示当前 PHP 文件的源代码&#xff0c;方便调试或展示代码内容 show_source(__FILE__);// 从 URL 的查询字符串中获取名为 hello 的参数值&#xff0c;并将其输出到页面上 // 例如&#xff0c;当访问的 URL 为 "example.php?helloworld" 时&…

MATLAB中savefig函数用法

目录 语法 说明 示例 将当前图窗保存到 FIG 文件 将多个图窗保存到 FIG 文件 使用 compact 选项保存图窗 savefig函数的功能是将图窗和内容保存到 FIG 文件。 语法 savefig(filename) savefig(H,filename) savefig(H,filename,compact) 说明 savefig(filename) 将当前…

Unity3D仿星露谷物语开发26之创建场景控制管理器

1、目标 创建场景控制管理器&#xff0c;来加载和卸载场景&#xff0c;以实现场景之间的切换。 2、思路 Fade To Back是黑色的过渡场景&#xff0c;透明度逐渐变为1。 Fade To Transparent To Show Scene&#xff1a;黑色消失的过渡场景&#xff0c;透明度逐渐变为0. 事件触发…

Java小白入门教程:Object

目录 一、定义 二、作用 三、使用场景 四、语法以及示例 1、创建Object类型的对象 2、使用 toString()方法 3、使用 equals()方法 4、使用 hashCode()方法 5、使用 getClass()方法 6、使用 clone()方法 7、使用 finalize()方法 一、定义 在Java中&#xff0c; object…

No.7十六届蓝桥杯备战|单目操作符|getchar|putchar(C++)

单⽬操作符 前⾯介绍的操作符都是双⽬操作符&#xff0c;即有2个操作数。除此之外还有⼀些操作符只有⼀个操作数&#xff0c;被称为单⽬操作符。如 、–、(正)、-(负) 就是单⽬操作符。 和– 是⼀种⾃增的操作符&#xff0c;⼜分为前置和后置&#xff0c;–是⼀种⾃减的操作…

手撕Vision Transformer -- Day1 -- 基础原理

手撕Vision Transformer – Day1 – 基础原理 目录 手撕Vision Transformer -- Day1 -- 基础原理Vision Transformer (ViT) 模型原理1. Vit 网络结构图2. 背景3. 模型架构3.1 图像切块&#xff08;Patch Embedding&#xff09;3.2 添加位置编码&#xff08;Positional Encoding…