ctfshow之web58~web71

目录

web58

思路一:

思路二: 

思路三:  

 web59~web65

web66~web67

 web68~web70

web71


web58

if(isset($_POST['c'])){$c= $_POST['c'];eval($c);
}else{highlight_file(__FILE__);
} 

PHP eval() 函数介绍

定义和用法
eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾(php代码语句,不能是简单的2+3)

如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。

 区分eval函数和system函数:http://t.csdnimg.cn/pD1Ow

再介绍一些执行系统命令的函数: 

但在本题这些函数都用不了

思路一:

这里介绍两个函数: 

  1. show_source();
  2. highlight_file();

 或者说这两个函数是一样的,只是名称不一样

用法:

highlight_file(filename,return)
//filename必选
//return可选

结果就是输出filename文件里面的代码(不会执行filename里面的运算或输出)并进行高亮显示

 payload:c=highlight_file("flag.php");  //注意这里是有分号的,因为eval函数执行的是php语句;

思路二: 

尝试文件读取函数file_get_contents(path),path参数必选,还有其他几个参数是可选,这里不赘述了

用法:file_get_contents() 把整个文件读入一个字符串中。

案例:

<?php
echo file_get_contents("test.txt");
?>//输出This is a test file with test text.

payload:c=file_get_contents("flag.php");

payload:c=$a=file_get_contents("flag.php");echo $a;

//这两个应该都可以     

思路三:  

尝试文件包含函数:include()

 ‌include()函数‌是PHP中用于包含外部文件内容的函数。它允许在一个PHP文件中嵌入另一个文件的内容,这对于代码重用和模块化非常有用。include()函数的行为是,如果文件不存在,它只会发出一个警告,并且脚本会继续执行。

 可以通过使用伪协议对其内容执行输出

伪协议是PHP中一种特殊的数据URI方案,它允许在URL中直接包含数据或执行代码。通过使用伪协议,可以在不经过服务器文件系统的情况下直接读取或执行数据。

payload如下: 

 得到flag.php文件内容的base64编码,将其解码即可 

或者payload:

c=include(flag.php);echo $flag; 

 web59~web65

if(isset($_POST['c'])){$c= $_POST['c'];eval($c);
}else{highlight_file(__FILE__);
} 

思路一和思路三在这几题中都可以白嫖

web66~web67

题目一样,使用c=highlight_file("flag.php");

说明flag不在flag.php文件里面;

那么我们应该查找目录结构中包含的文件:c=var_dump(scandir("."));或者c=print_r(scandir("."));

 scandir()从名字上看该函数就是扫描目录文件的,

  1. .和./都表示当前目录
  2. ../表示上一级目录
  3. /表示根目录

扫描根目录(c=var_dump(scandir("/"));发现了flag.txt

payload:c=highlight_file("/flag.txt");

 web68~web70

本题highlight_file()和show_source()都不能用;还是尝试include()

(经过查找目录,猜测flag应该在/flag.txt中)

补充:include包含的文件如果不是php文件或者说是html文件,那么会自动输出文件内容,不用写echo $flag

 当然本题还可以用伪协议php:filter,也是同样的效果

web71

发现有附件,打开提示

error_reporting(0);
ini_set('display_errors', 0);
// 你们在炫技吗?
if(isset($_POST['c'])){$c= $_POST['c'];eval($c);$s = ob_get_contents();ob_end_clean();echo preg_replace("/[0-9]|[a-z]/i","?",$s);
}else{highlight_file(__FILE__);
}

 ob_get_contents()是将缓冲区的内容输出,然后ob_end_clean()清空缓冲区,最后将缓冲区内容(flag)中的字符全部替换成?,最后输出;

这就是为什么我们执行命令后(c=include("/flag.txt");)输出的都是?????

既然eval函数后面的代码会影响我们的输出,那我们可以直接不执行后面的代码;

有两个函数可以停止后面代码的执行

  1. die();  //c=include("/flag.txt");die();
  2. exit(); //c=include("/flag.txt");exit();

 拿到flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/414040.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新型蜜罐有哪些?未来方向如何?

前言&#xff1a;技术发展为时代带来变革&#xff0c;同时技术创新性对蜜罐产生推动力。 一、新型蜜罐的诞生 技术发展为时代带来变革&#xff0c;同时技术创新性对蜜罐产生推动力&#xff0c;通过借鉴不同技术思想、方法&#xff0c;与其它技术结合形成优势互补&#xff0c;…

python内置模块time详解(我们需要了解的多种时间格式)

Python的time模块提供了各种与时间相关的函数。我们可以获取当前时间、操作时间日期、计算两个时间差等。 时间有两种标准表示法: 数字表示: 整数或浮点数&#xff0c;通常是自从1970年1月1日以来的秒数。9个整数组成的元组&#xff1a;元组项包含年份&#xff0c;月份&#…

Diffusion 模型生成图片太慢了?用 AE(AutoEncoder) 和 VAE 加速一波!

Diffusion 模型生成图片太慢了&#xff1f;用 AE(AutoEncoder) 和 VAE(Variational AutoEncoder) 压缩图片加速一波&#xff01; 本文分为两个部分&#xff1a;理论学习和代码实践。 先预览一下 AE 和 VAE 模型的效果&#xff1a; 理论学习 本文价值 Diffusion 模型生成图片的效…

图像识别智能垃圾桶项目开发--语音命令识别垃圾

一、项目思维导图 二、语音模块配置信息 三、项目程序 main.c garbage.c garbage.h uartTool.c //串口发送数据 uartTool.h

台式机CPU温度90℃以上-排查思路

虽然现在台式机不值钱。 但是对于穷苦老百姓来说&#xff0c;还是害怕它坏掉&#xff0c;坏掉就又需要花钱买了。 ①风扇清理所有灰尘&#xff08;风扇的散热网是可以拆下来的&#xff09;&#xff0c; 主板清理所有灰尘&#xff08;用画笔或者干燥的牙刷&#xff0c;注意是…

编程效率进阶:打造你专属的 Git 别名与 PyCharm 完美结合

在日常开发中&#xff0c;Git 是我们不可或缺的工具。掌握常用 Git 命令可以帮助我们更高效地进行版本控制&#xff0c;但随着命令的复杂性增加&#xff0c;记住所有命令变得困难。这时&#xff0c;Git 别名的设置就显得尤为重要。此外&#xff0c;许多开发者使用 PyCharm 作为…

TypeScript与vue

一、为组件的props标注类型 - 在没有使用TS之前&#xff0c;是这样接受props&#xff1a; - 在TS环境中&#xff0c;是这样接受props&#xff1a; - 对于props的可选项如何限制呢&#xff1f; 1、类型限制 类型限制在接收的时候就已经定义好了 2、可选属性&#xff08;必填限制…

c# net8调用vc写的dll

dll程序&#xff08;vc,x86) 头文件 extern "C" int __declspec(dllexport) WINAPI add(int a, int b);实现 int WINAPI add(int a, int b) {return a b; }c#/net8 函数声明&#xff1a; [DllImport("dll/Dll1.dll", CallingConvention CallingCo…

c++中的匿名对象及内存管理及模版初阶

目录 c中的匿名对象 日期到天数的转换 深入理解析构 深入理解拷贝构造 内存管理 全局变量和static变量的区别&#xff1b; malloc/calloc/realloc的区别 new和delete的意义&#xff1f; operator new与operator delete函数 对比malloc和new operator 定制operator ne…

switch语句和while循环

switch语句和while循环 switch语句break的用法default的用法switch语句中的case和default的顺序问题 while语句while语句的执行流程while语句的具体例子 switch语句 switch 语句是⼀种特殊形式的 if…else 结构&#xff0c;用于判断条件有多个结果的情况。它把多重 的 else if…

Markdown语法与Latex公式汇总

1 基本语法 1.1 标题 语法如下&#xff1a; 效果如下&#xff1a; 1.2 字体样式 语法效果普通正文字体普通正文字体*倾斜字体*倾斜字体**加粗字体**加粗字体***倾斜加粗字体***倾斜字体~~划线字体~~倾斜字体 1.3 分割线 语法如下&#xff1a; 效果如下&#xff1a; …

鸿蒙项目签名配置

配置需要以下四个文件&#xff1a; 1. p12文件 2. csr文件 3. cer文件 打开AGC平台 点击申请调试证书 4. p7b文件 最后在项目中进行配置 配置项目的module.json5中

NASAVIIRS数据下载

目录 Visible Infrared Imaging Radiometer Suite&#xff08;VIIRS&#xff09;NOAA 数据下载用户注册 数据查找1.选择产品类型2. 数据索引3. 提交订单 Visible Infrared Imaging Radiometer Suite&#xff08;VIIRS&#xff09; 来自 Suomi NPP 的可见光红外成像辐射计套件 …

学习如何更好向GPT提问

如今以chatgpt为首的各种语言大模型应运而出&#xff0c;已经逐渐应用到平时的工作和学习中&#xff0c;但就算是使用同一种大模型提问同一个问题也有不同的答案&#xff0c;如何更快更好的获取优质答案是应该关心和学习的重点。 本文在《成为提问工程师》书的基础上加以整理总…

【Python系列】 Python 中的枚举使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

求解组合优化问题的具有递归特征的无监督图神经网络

文章目录 ABSTRACT1 Introduction2 Related Work3 QRF-GNN方法4 数值实验4.1 MAX-CUT4.2 COLORING5 conclusionABSTRACT 介绍了一种名为QRF-GNN的新型算法,有效解决具有二次无约束二进制优化(QUBO)表述的组合问题。依赖无监督学习,从最小化的QUBO放松导出的损失函数。该架构…

【软件工程】软件生命周期(生存周期)

考点3 软件生命周期&#xff08;生存周期&#xff09; 一、定义 软件产品或软件系统从设计、投入使用到被淘汰的全过程。 二、3周期 题目 一、判断题 二、选择题

mac电脑里面的 磁盘分区,容器,宗卷,宗卷组的理解和使用

在mac电脑里面我们一般都是使用宗卷&#xff0c;他和我们常见的pc机器硬盘的分区是有区别的。 对于物理硬盘来说 不管是分区还是宗卷&#xff0c;他们都是逻辑上面的概念。 分区 mac电脑里面的分区 和 pc电脑中的分区差不多&#xff0c; 他们都是针对的物理硬盘&#xff0c;…

Linux系列之基础篇

文章目录 开篇明义基础篇实际操作篇高级篇Linux之JavaEELinux在哪些地方使用Linux应用领域 Linux入门基本介绍Linux和Unix关系 VM和Linux的安装基本说明安装VM17.5安装Centos7.6网络连接解释 虚拟机克隆虚拟机快照虚拟机迁移和删除安装vmtools设置共享文件夹 Linux目录结构 开篇…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库&#xff0c;以其高性能的键值对存储和多种应用场景而闻名。本…