fileinclude

news/2024/10/23 9:33:01/

看题目提示,应该是一道文件包含的题目,打开环境后直接告诉我flag在flag.php里

但是因为不知道绝对路径,不能直接利用file读取

查看源码后,发现里面嵌入了一段php代码

代码审计

  • 首先,通过if( !ini_get('display_errors') )判断当前PHP环境是否已设置display_errors配置参数。如果没有设置,则通过ini_set('display_errors', 'On')设置为打开错误显示功能。

  • 使用error_reporting(E_ALL)设置错误报告级别为显示所有错误。

  • 然后,从$_COOKIE数组中获取名为language的值,并将其赋值给$lan变量。

  • 如果$lan不存在或为空,使用setcookie函数设置一个名为language的cookie,值为"english",并包含"english.php"文件。

  • 如果$lan有值,根据该值包含相应的语言文件。

  • 使用file_get_contents函数获取名为index.php的文件的内容,并将其赋值给变量$x。

  • 最后,使用echo语句将变量$x的内容输出。

分析到这里方法就明确了,通过cookie传入文件包含的payload,就会执行

display_errors

display_errors是PHP配置选项之一,用于控制是否在页面上显示错误信息。

display_errors配置参数被设置为On时,PHP会在页面上显示运行时错误信息。这对于开发和调试阶段非常有用,可以实时查看代码中的错误,并及时进行修复。

display_errors配置参数被设置为Off时(或者未设置),PHP将禁止在页面上显示错误信息。这在生产环境中是一种常见的配置,以防止敏感信息暴露给用户或潜在的安全风险。

解题步骤

首先我们通过burp抓包,修改cookie值传入payload,这里尝试传入filter伪协议读取源码

发现可以读取,抓包后是没有Cookie字段的,记得插入Cookie的位置不要处于数据包最后,反正我会请求超时

解密后直接获得了flag

fileclude

代码审计

依旧很简单的哦

<?php
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET["file1"]) && isset($_GET["file2"]))
{$file1 = $_GET["file1"];$file2 = $_GET["file2"];if(!empty($file1) && !empty($file2)){if(file_get_contents($file2) === "hello ctf"){include($file1);}}elsedie("NONONO");
}
  • 首先包含flag文件

  • 然后检测GET传参的file和fil2是否存在

  • 如果存在就分别对变量进行赋值

  • 如果变量都不为空,并且打开file2后的值等于hello ctf,就包含file1

直接这样构造file2,触发报错说没有找到目录或文件,有点傻的

突然想要file_get_contents函数是打开文件读取的,所以我们这里需要利用php的data伪协议写入数据

不行,虽然没有报错,但是没有回显数据,我语句没错吧

那就使用input方法写入文件吧

也不行,无语了没有报错说明其实写入了呀,为啥读不出来,检查了很多遍filter命令也没错

最后是因为,第一次传参的时候加了引号闭合,导致传入不成功

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

解码后获得flag


http://www.ppmy.cn/news/805657.html

相关文章

极光为华硕 ROG 游戏手机 3 搭建符合统一推送联盟标准的推送系统

2020年7月23日&#xff0c;华硕 ROG 游戏手机3正式发布。该款手机为 ROG 玩家深度定制&#xff0c;旨在提供专属沉浸式游戏体验。华硕在发布会上同时宣布&#xff0c;由其合作伙伴、中国领先的移动开发者服务提供商极光&#xff08;Aurora Mobile, 纳斯达克股票代码&#xff1a…

【Spring Boot】第一个Spring Boot项目:helloworld

第一个Spring Boot项目&#xff1a;helloworld 本节从简单的helloworld程序开始介绍创建Spring Boot项目的方法和流程&#xff0c;以及Spring Boot项目结构&#xff0c;最后介绍项目中非常重要的pom.xml文件。 1.创建Spring Boot项目 有两种方式来构建Spring Boot项目的基础…

4.7 x64dbg 应用层的钩子扫描

所谓的应用层钩子&#xff08;Application-level hooks&#xff09;是一种编程技术&#xff0c;它允许应用程序通过在特定事件发生时执行特定代码来自定义或扩展其行为。这些事件可以是用户交互&#xff0c;系统事件&#xff0c;或者其他应用程序内部的事件。应用层钩子是在应用…

淘宝+天猫+闲鱼卖的翻新货店家汇总(持续更新)

内存条翻新的标志就是&#xff0c;上面的颗粒的logo都是不一样的。 丰文思数码专营店&#xff1a; 卖翻新的海力士内存条。 不适合老机子组双通道&#xff0c;一定概率黑屏、蓝屏以及开不了机&#xff0c;若买单条则推荐购买, 是目前卖海力士内存条最便宜的天猫店家&#xff0…

为什么计算机内存4倍增长,DDR5来了!全新电脑内存规范发布,相比DDR4,内存速度提高一倍...

原标题&#xff1a;DDR5来了&#xff01;全新电脑内存规范发布&#xff0c;相比DDR4&#xff0c;内存速度提高一倍 Hello大家好&#xff0c;我是兼容机之家的小牛。 电脑内存从DDR、DDR2、DDR3、DDR4发展以来&#xff0c;终于迎来DDR5&#xff0c;今日&#xff0c;固态技术协会…

【装机知识】内存条知识总结

在CPU篇提到&#xff0c;如果CPU三级缓存不够用&#xff0c;也就是医院内部药不够的时候&#xff0c;要去医院外取药&#xff0c;这个医院外首先要去的地方就是内存。内存的读写速度非常快&#xff0c;甚至比主流的固态硬盘还要快十几倍。这也是为什么尽管内存条容量不大&#…

r720支持多少频率的内存吗_电脑基础知识:内存条知识大全,看完小学生都了解...

一、基础知识 如果你不了解内存条&#xff0c;如果你只知道内存容量越大越好&#xff0c;如果你想更加了解内存条&#xff0c;不妨来看看这里&#xff0c;今天给大家分享那些最简单也是最容易理解的内存条知识。 1、定义、作用 内存条又叫随机存取存储器&#xff0c;是一种存储…

内存和硬盘简介

现在了解到的内存大概有三类 分别是ROM、RAM、Flash 1.ROM(只读内存(Read-Only Memory)简称) 分为四类 I ROM 写入不能更改,成本较低,典型应用“光盘” II PROM和OTPPROM 可编程一次的 III EPROM 可抹除可编程,紫外光抹除 IV EEPROM 电子式可抹除可编…