ctfshow之web58~web71

news2024/11/13 15:53:14

目录

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.coloradmin.cn/o/2092518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Sceneform-EQR】通过filament(gltfio)加载gltf模型动画(Filament使用Animator)

Sceneform-EQR 简介 Sceneform-EQR是EQ基于sceneform&#xff08;filament&#xff09;扩展的一个用于安卓端的三维渲染器。 相关链接 Git仓库 Sceneform-EQR 码云 EQ-Renderer的示例工程 EQ-R相关文档 文档目录CSDN专栏 实现通过filament加载gltf模型动画 运行示例 …

U盘无法访问?揭秘原因与高效恢复策略

一、U盘困境深度剖析 在日常的数字生活中&#xff0c;U盘作为我们存储和传输数据的重要工具&#xff0c;其重要性不言而喻。然而&#xff0c;当U盘突然显示“无法访问”时&#xff0c;这种突如其来的困境往往让人措手不及。U盘无法访问的现象可能由多种原因造成&#xff0c;包…

Question mutiple pdf‘s using openai, pinecone, langchain

题意&#xff1a;使用 OpenAI、Pinecone 和 LangChain 对多个 PDF 文件进行提问。 问题背景&#xff1a; I am trying to ask questions against a multiple pdf using pinecone and openAI but I dont know how to. 我正在尝试使用 Pinecone 和 OpenAI 对多个 PDF 文件进行提…

ssh远程连接服务

1、概述 一种安全访问远程服务器的协议&#xff0c;远程管理工具&#xff0c;通过加密方式管理连接&#xff0c;使服务器更安全。 2、加密算法 对称加密 发送密码前将密码数据加密成密文&#xff0c;然后发送出去 接收方收到密文后&#xff0c;使用同一个密钥将密文解密。…

基于爬山法MPPT和PI的直驱式永磁同步风力发电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 PMSM 4.2 MPPT 4.3 PI 控制器原理 5.完整工程文件 1.课题概述 基于爬山法最大功率点跟踪 (Maximum Power Point Tracking, MPPT) 和比例积分控制器 (Proportional Integral, PI) 的直驱式永磁同步…

《软件工程导论》(第6版)第5章 总体设计 复习笔记

第5章 总体设计 一、总体设计概念 1&#xff0e;定义 总体设计的基本目的就是回答“系统应该如何实现”这个问题&#xff0c;总体设计又称为概要设计或初步设计。 2&#xff0e;主要任务 &#xff08;1&#xff09;划分出组成系统的物理元素程序、文件、数据库、人工过程…

大模型种草书籍——BERT基础教程:Transformer大模型实战,看完头皮发麻!

《BERT基础教程&#xff1a;Transformer大模型实战》 是一本专注于介绍自然语言处理&#xff08;NLP&#xff09;领域的先进技术——BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;及其应用的教程书籍。 以下是这本书的简要介绍&#…

C++:string类(1)

1.标准库中的string类 1.1 string类(了解) string类的文档介绍在使用string类时&#xff0c;必须包含#include头文件以及using namespace std; 1.2 auto和范围for auto关键字 用auto声明指针类型时&#xff0c;用auto和auto*没有任何区别&#xff0c;但用auto声明引用类型…

gdb 教程

文章目录 GDB启动 GDB 的方法GDB 命令工具参考 GDB GDB是Linux下的调试工具&#xff0c;可以调试C、C、Go、java等语言 GDB提供了以下四个功能&#xff1a; 程序启动时&#xff0c;可以按照自定义的要求运行程序&#xff0c;如设置参数和环境变量可以让被调试的程序在所指定…

Netflix Feign:微服务HTTP调用如何简化?

Netflix Feign&#xff1a;微服务HTTP调用如何简化&#xff1f; 1、什么是Netflix Feign&#xff1f;2、Feign的优点3、示例4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、什么是Netflix Feign&#xff1f; Feign是一个声明式的…

MFC工控项目实例之十添加系统测试对话框

承接专栏《MFC工控项目实例之九选择下拉菜单主界面文本框显示菜单名》 参考前期我的博客文章《MFC3d立体按钮制作》 这里只给出相关代码 1、在SysTest.h文件中添加代码 #include "ShadeButtonST.h" #include "BtnST.h" class CSysTest : public CDialog {…

OpenAI“草莓”模型及全能型与专业型AI的思考

一、OpenAI“草莓”模型的全能性及其未来趋势 近日&#xff0c;OpenAI预计在秋季推出的代号为“草莓”的新AI模型&#xff0c;展现了其在自然语言处理&#xff08;NLP&#xff09;和深度学习领域的又一重大突破。该模型不仅增强了推理能力&#xff0c;还提供了更为人性化的互动…

穿越Java世界的继承奇旅:从基类到子类的华丽蜕变

1.为什么要继承 2.什么是继承以及继承的方式 3.继承的一些语法 4.父类成员的访问 5.关键字super 6.关键字protected 7.关键字final 8.继承与组合 一&#xff1a;为什么要继承 ①代码重用&#xff1a;继承允许我们重用、扩展或修改父类的属性和方法&#xff0c;而无需重…

<Rust>egui学习之小部件(四):如何在窗口中添加滚动条Scroll部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第四篇博…

【C++ Primer Plus习题】7.10

问题: 解答: #include <iostream> using namespace std;double add(double a, double b) {return a b; }double mul(double a, double b) {return a * b; }double sub(double a, double b) {return a - b; }double div(double a, double b) {return a / b; }double cal…

[LLM]:大模型(Transformer)参数量分析

1. 前言2. 模型参数量 文章内容主要摘自&#xff1a;https://zhuanlan.zhihu.com/p/624740065 1. 前言 最近&#xff0c;OpenAI推出的ChatGPT展现出了卓越的性能&#xff0c;引发了大语言模型(Large Language Model, LLM)的研究热潮。大规模语言模型的“大”体现在两个方面&am…

Python编码系列—Python代码重构:提升代码质量

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

Leetcode面试经典150题-151.反转字符串中的单词

class Solution {public String reverseWords(String s) {/**先trim一下去掉前后的空格*/String str s.trim();/**转成字符数组 */char[] sArr str.toCharArray();/**先整体倒置*/int l 0;int r sArr.length - 1;reverse(sArr, l, r);/**然后每个单词中逆序 */int left 0;…

SAM 提示框和 Unet的语义分割的融合:自动驾驶车道线分割

1、前言 最近SAM 模型复现的多了&#xff0c;看了不少官方的源码&#xff0c;尝试下SAM和Unet的结合 SAM的提示分割&#xff0c;其实就是在分割的时候&#xff0c;为数据增加一个提示信息&#xff0c;可以是框&#xff0c;点&#xff0c;或者文本等等。这样大模型网络就可以根…

【Python】简单的爬虫抓取

效果&#xff1a;抓取某个学校网站的教授名录&#xff0c;并获取研究方向。 由于网站使用的都是明文&#xff0c;所以抓起来没什么难度&#xff0c;且平时访问量小&#xff0c;很值得用来练习。 代码如下&#xff0c;解释请见注释 import timeimport requests from bs4 impor…