学习
实践
活动
工具
TVP
写文章
专栏首页Deen的代金券日记2018上海大学生安全竞赛web3解析
原创

2018上海大学生安全竞赛web3解析

直接给源码吧:

<?php
    //error_reporting(0);
    //$dir=md5("icq" . $_SERVER['REMOTE_ADDR']);
    $dir=md5("icq");
    $sandbox = '/var/sandbox/' . $dir;
    @mkdir($sandbox);
    @chdir($sandbox);

    if($_FILES['file']['name']){
        $filename = !empty($_POST['file']) ? $_POST['file'] : $_FILES['file']['name'];
        if (!is_array($filename)) {
            $filename = explode('.', $filename);
        }
        $ext = end($filename);
        if($ext==$filename[count($filename) - 1]){
            die("emmmm...");
        }
        $new_name = (string)rand(100,999).".".$ext;
        move_uploaded_file($_FILES['file']['tmp_name'],$new_name);
        $_ = $_POST['hehe'];
        if(@substr(file($_)[0],0,6)==='@<?php' && strpos($_,$new_name)===false){
            include($_);
        }
        unlink($new_name);
    }
    else{
        highlight_file(__FILE__);
        

先看后缀名绕过吧。看着有点熟悉,总感觉在哪见过,后来才想起是pwnhub的公开赛里见过,考察的是end()函数。给个例子输出就清楚了。

<?php
	$a[2] = '222';
	$a[1] = '111';
	$a[0] = '000';
	
	$end = end($a);
	var_dump($end);
	
	$arr = $a[count($a)-1]
	var_dump($arr);


?>

输出结果:

end输出输入顺序最后一个

所以这里绕过是文件名取$_POST'file'绕过

至于下面unlink的绕过,有两种解法,一种是加/.,一种是../绕过。

我本地搭建更换了目录,可以看到已经成功写入

加/. unlink无法删除是linux下的特性,windows并不适用。

接下来传入hehe参数,爆破包含即可。

至于加../,产生的随机数会生成会被当成路径。

然后直接包含我们的文件即可。

看下当前目录

生成了shell.php,也成功写入了。

这里加 /. 和 ../ unlink都没删除,p牛小密圈给过解释

查看php源码,其实我们能发现,php读取、写入文件,都会调用php_stream_open_wrapper_ex来打开流,而判断文件存在、重命名、删除文件等操作则无需打开文件流。

我们跟一跟php_stream_open_wrapper_ex就会发现,其实最后会使用tsrm_realpath函数来将filename给标准化成一个绝对路径。而文件删除等操作则不会,这就是二者的区别。

所以,如果我们传入的是文件名中包含一个不存在的路径,写入的时候因为会处理掉“../”等相对路径,所以不会出错;判断、删除的时候因为不会处理,所以就会出现“No such file or directory”的错误。

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

登录 后参与评论
0 条评论

相关文章

  • MIT华裔学生包揽第82届普特南竞赛Top5!高中拿国际奥数金牌,升大学后更牛

    ---- 新智元报道   编辑:袁榭 拉燕 【新智元导读】美国与加拿大的知名大学生数学赛事-普特南竞赛,最新一届的桂冠全由MIT的华裔学子囊括。 最近,普...

    新智元
  • 清华夺ASC、ISC、SC三项超算比赛大满贯

    美国当地时间 11 月 15 日,2018 国际大学生超级计算机竞赛(SC2018)中,清华大学计算机系超算团队夺得总冠军,总分 88.398 分(满分 100...

    AI科技大本营
  • 清华大学成功卫冕ASC18世界超算总决赛冠军,黑马上海科大斩获AI大奖

    新智元
  • 中国大学生程序设计竞赛 CCPC 落幕,清华夺冠!旷视承诺包揽未来 5 年赛事总赞助

    AI 科技评论按:经过 2018 年 11 月 24 — 25 日两日紧张的比赛,第四届中国大学生程序设计竞赛( CCPC )总决赛于 25 日落下帷幕,「清华...

    AI科技评论
  • 安恒信息助力全国大学生信息安全竞赛(东北赛区)举行

    6月2日,2018 年全国大学生信息安全竞赛创新能力实践赛(东北赛区)半决赛上半场在哈尔滨工业大学举办。来自东北三省的8支战队参与了此次比赛。今天,上半场比赛圆...

    安恒信息
  • 清华团队夺SC超算大赛4连冠!华中科大斩获「图计算」2项世界第一

    11月18日,国际超级计算大会揭晓了第18届Green Graph 500和第23届Graph 500排名榜单。华中科技大学图计算团队斩获两项全球第一!

    新智元
  • 各大OJ刷题平台汇总

    江湖人尽皆知的站点,全球知名的编程平台!总部在美国旧金山的硅谷,创办与2011年,2018年进入中国,并推出付费服务,19年推出力扣App。力扣为全球程序员...

    全栈程序员站长
  • 清华大学四连冠,南科大获得最高性能奖!国际大学生超算竞赛SC21结果出炉

    在刚刚结束的国际大学生超算竞赛(SC21)总决赛上,来自清华大学的6名本科生团队在全球10支队伍中脱颖而出,获得了总冠军。

    量子位
  • IMO 2021国家队6人名单出炉!CMO全国冠军入选,深圳中学独占2席

    最新消息:第62届国际数学奥林匹克竞赛(International Mathematical Olympiad)中国参赛名单公布!6 人入选,其中深圳中学独占 ...

    AI科技评论
  • 恭喜|17支广西职业技术学院战队跻身ISCC 2018百强

    近日,第15届(2018)全国大学生信息安全与对抗技术竞赛(ISCC2018)举行。而在广西赛区中,17支广西职业技术学院的战队以优异的成绩名列前100名,占比...

    安恒信息
  • 我们做了一个智能零售结算平台

    目前在零售行业的实际运营过程中,会产生巨大的人力成本,例如导购、保洁、结算等,而其中,尤其需要花费大量的人力成本和时间成本在识别商品并对其进行价格结算的过程中,...

    Datawhale
  • 暨南大学首次问鼎ASC世界超算大赛!清华获亚军,中山大学再破计算性能纪录

    5 月 12 日,在深圳的南方科技大学,世界大学生超级计算机竞赛 ASC20-21 正式落下帷幕。冠军奖项由暨南大学摘得,清华大学获得大赛亚军和 e Prize...

    机器之心
  • 2021戈登贝尔奖揭晓!中国超算应用一举夺冠,打破谷歌所谓“量子霸权”!

    北京时间2021年11月18日凌晨,在全球超级计算大会(SC21)上,由之江实验室联合清华大学、国家超级计算无锡中心、上海量子科学研究中心组成的14人团队摘得素...

    AI科技评论
  • 200万年薪!西交大2位计算机博士入选华为天才少年

    ---- 新智元报道   编辑:桃子 拉燕 【新智元导读】2019年,华为发布全球招募令,计划在全世界招募20-30名华为天才少年。至今,已经有20位天才...

    新智元
  • 北大数院校友唐云清斩获拉马努金奖!数学大神陶哲轩曾获此奖

    ---- 新智元报道   编辑:David 桃子 【新智元导读】北大数院07级院友唐云清斩获拉马努金奖! 又一位北大数院校友斩获拉马努金奖! 10月3日,...

    新智元

扫码关注腾讯云开发者

领取腾讯云代金券