攻防世界web第三题file_include

embedded/2024/12/29 10:41:58/
<?php
highlight_file(__FILE__);include("./check.php");if(isset($_GET['filename'])){$filename  = $_GET['filename'];include($filename);}
?>

这是题目
惯例:
代码审查:
1.可以看到include(“./check.php”);猜测是同级目录下有一个check.php文件用于过滤之类的
2. if(isset($_GET['filename'])){ $filename = $_GET['filename']; include($filename); }
判断url中是否有参数名为filename的值,如果不为空,则将其赋值给$filename变量,猜测利用这一点把check.php执行出来。

测试:
发送请求构造url:http://61.147.171.105:63401/?filename=check.php
提交无反应
在这里插入图片描述
这时再考虑伪协议用base64编码读取
构造url: http://61.147.171.105:63401/?filename=php://filter/read=convert.base64-encode/resource=./check.php
再次提交,显示dont hack!
在这里插入图片描述
到这里,可以证明我们的思路基本正确,关键信息大概率在check.php文件中,我们再考虑如何绕过读取真正的信息。
猜测是由于编码格式的问题,我们换最常用的utf-8和utf-16编码格式读
构造url: http://61.147.171.105:63401/?filename=php://filter/convert.iconv.utf8.utf16/resource=./check.php
提交得到
在这里插入图片描述
根据输出的内容可以看到是过滤“be,encode”等字段,到这里,说明我们已经能成功访问check.php了。而这里并没有flag,那我们猜测还有另一个flag.php文件,测试一下
构造url:
http://61.147.171.105:63401/?filename=php://filter/convert.iconv.utf8.utf16/resource=./flag.php

提交得到
在这里插入图片描述
成功拿到flag

总结:1.要能读懂代码
2.要会PHP:filter协议

知识点:
1.php://filter
PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。
在这里插入图片描述
参考这个:这个

2.$_GET变量
G E T 是 P H P 中的一个预定义超全局变量,专门用于收集通过 H T T P G E T 方法传递的参数 1 。这个变量允许开发者轻松地从 U R L 查询字符串中提取信息,使得在不同页面之间传递数据变得简单高效。由于其特殊性质, _GET 是PHP中的一个预定义 超全局变量 ,专门用于收集通过HTTP GET方法传递的参数1。这个变量允许开发者轻松地从URL查询字符串中提取信息,使得在不同页面之间传递数据变得简单高效。由于其特殊性质, GETPHP中的一个预定义超全局变量,专门用于收集通过HTTPGET方法传递的参数1。这个变量允许开发者轻松地从URL查询字符串中提取信息,使得在不同页面之间传递数据变得简单高效。由于其特殊性质,_GET在整个脚本执行期间都可用,无需显式声明,这大大简化了Web应用程序中数据处理的过程。
3.isset函数
在这里插入图片描述
4.include 和 require 是PHP中用于在当前文件中包含(或插入)另一个文件内容的两个语句。它们的主要目的是代码复用,通过包含(或引用)外部文件的方式,使得PHP代码更加模块化和易于管理。然而,尽管它们的目标相似,但在处理包含文件失败时的行为上有所不同,相当于Java中的import。

include:当使用include语句时,如果指定的文件不存在或路径错误,PHP会发出一个警告(E_WARNING),但脚本会继续执行。这意呀着,如果你的页面依赖于被包含文件中的内容(比如函数定义、类定义或变量初始化),而该文件未被成功包含,那么页面可能会显示不完整或功能异常,但用户仍然可以看到页面。


http://www.ppmy.cn/embedded/149378.html

相关文章

【数据库】PostgreSQL(持续更新)

目录 K8S 部署基本使用高级特性 K8S 部署 # pg.yaml --- apiVersion: v1 kind: PersistentVolume metadata:name: tv-postgres-pvnamespace: locallabels:storage: tv-postgres-pv spec:accessModes:- ReadWriteOncecapacity:storage: 50Gi # 按需修改&#xff0c;需要保持与…

【每日学点鸿蒙知识】推送指定页面参数、Devtools 做Web调试、图片的加载与压缩、三方so 打进hap包、Url获取参数

1、HarmonyOS 定向推送指定页面怎么推送&#xff0c;带参数&#xff1f; 可以参考文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-router-V5 2、HarmonyOS Devtools 做Web调试&#xff1f; 参照以下链接,每一步都不可缺少&…

webrtc-internals调试工具

Google 的 Chrome&#xff08;87 或更高版本&#xff09;WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具; webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。 webrtc-int…

基于Oauth2的SSO单点登录---后端

【springbootvue项目&#xff08;十三&#xff09;】 Springboot整合Spring SecurityJWT 【springbootvue项目&#xff08;十四&#xff09;】基于Oauth2的SSO单点登录&#xff08;一&#xff09;整体流程介绍 【springbootvue项目&#xff08;十五&#xff09;】基于Oauth2的…

安卓APP-HTTPS抓包Frida Hook教程

文章目录 安卓APP-HTTPS抓包Frida Hook教程本机环境环境搭建bluestacks 环境搭建frida环境搭建抓包流程抓包及https解密方法流量分析查看包名安卓APP-HTTPS抓包Frida Hook教程 本机环境 windows 11bluestacks 5.11.56.1003 p64adb 31.0.2Root Checker 6.5.3wireshark 4.0.5fri…

使用gdb调试C程序

1.程序样例 test.c: #include <stdio.h>int main () { unsigned long long int n, sum; n 1; sum 0; while (n < 100) { sum sum n; n n 1; } return 0; }2.编译程序 gcc -g test.c -o test3.运行调试 gdb test --silent 4.调…

基于GEE云计算、多源遥感、高光谱遥感技术蓝碳储量估算;红树林植被指数计算及提取

海洋是地球上最大的“碳库”,“蓝碳”即海洋活动以及海洋生物&#xff08;特别是红树林、盐沼和海草&#xff09;能够吸收大气中的二氧化碳&#xff0c;并将其固定、储存在海洋中的过程、活动和机制。而维持与提升我国海岸带蓝碳潜力是缓解气候变化的低成本、高效益的方案&…

Spring API 接口加密/解密

API 接口加密/解密 为了安全性需要对接口的数据进行加密处理&#xff0c;不能明文暴露数据。为此应该对接口进行加密/解密处理&#xff0c;对于接口的行为&#xff0c;分别有&#xff1a; 入参&#xff0c;对传过来的加密参数解密。接口处理客户端提交的参数时候&#xff0c;…