当前位置:网站首页>反序列化字符逃逸漏洞之
反序列化字符逃逸漏洞之
2022-08-04 05:45:00 【一只Traveler】
参考:[安洵杯 2019]easy_serialize_php_甜筒化了 -的博客-CSDN博客_easy_serialize_php
知识点:
extract()变量覆盖
反序列化字符逃逸;
什么意思呢,就是说当进行反序列化数组的时候,只认前面一个括号里面的内容;例如;
<?php
$b='a:1:{s:2:"ei";s:5:"fjksj";}';
var_dump(unserialize($b)) ;
$c='a:1:{s:2:"ei";s:5:"fjksj";}dfjhgksaasdhgerakdj'; //在后面添加了一些干扰字符
var_dump(unserialize($c)) ;
结果:
结果是不变的;
那么如果当序列化后的字符串经过一些函数过滤掉一些字符会发生什么呢;因为序列化后的字符是按照要求严格执行的,什么意思,就是s:1:"a" ; 这个1指得是字符串长度,它会自动往后面截取;
所以通过这两个规则利用起来就可以构造我们想要的东西;
这就是反序列化字符逃逸;
和变量覆盖怎么用?
变量覆盖是直接将之前的值取代,这里就可以作为 键逃逸;没有变量覆盖就值逃逸;
至于构造过程参考上述 :
键逃逸:
_SESSION[flagphp]=;s:1:"1";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}
这里构造出来的session字典值就只有一个,就是
flagphp->;s:1:"1";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}
然而当经过
if(!$_GET['img_path']){
$_SESSION['img'] = base64_encode('guest_img.png');
}else{
$_SESSION['img'] = sha1(base64_encode($_GET['img_path']));
}
之后增加了img->base64_encode('guest_img.png');
此时serialize($_SESSION)的值就是:
a:2:{s:7:"flagphp";s:48:";s:1:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}";s:3:"img";s:20:"Z3Vlc3RfaW1nLnBuZw==";}
但是经过
filter(serialize($_SESSION));
就会把第一个flagphp吃掉;
所以变为:
a:2:{s:7:"";s:48:";s:1:"a";s:3:"img";s:20:"ZDBnM19mMWFnLnBocA==";}";s:3:"img";s:20:"Z3Vlc3RfaW1nLnBuZw==";}
再经过反序列化之后最后的";s:3:"img";s:20:"Z3Vlc3RfaW1nLnBuZw==";}就会被忽略掉;
这就改变了session的键值:
";s:48: ——>a
img——>ZDBnM19mMWFnLnBocA==
直接改变img不就可以了嘛!!!
边栏推荐
- 微软电脑管家2.0公测版体验
- 叔本华的《人生的智慧》感悟
- MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB
- Microsoft computer butler 2.0 beta experience
- 核心价值观编码器【matlab版】
- 代码小变化带来的大不同
- Hardware Knowledge: Introduction to RTMP and RTSP Traditional Streaming Protocols
- 拒绝碰运气,导师人品这样了解!
- 子空间结构保持的多层极限学习机自编码器(ML-SELM-AE)
- set集合
猜你喜欢
Computer software: recommend a disk space analysis tool - WizTree
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
狗都能看懂的Self-Attention讲解
E-R图总结规范
FCN——语义分割的开山鼻祖(基于tf-Kersa复现代码)
舍不得花钱买1stOpt,不妨试试这款免费的拟合优化神器【openLU】
2DCNN, 1DCNN, BP, SVM fault diagnosis and result visualization of matlab
nacos 返回 403 unknown user 太他么坑了 源码解析
Online public account article content to audio file practical gadget
MySQL大总结
随机推荐
花了近70美元入手的学生版MATLAB体验到底如何?
水平垂直居中的12种方法,任意插入节点的方法,事件的绑定的三种方法和解绑的方法,事件对象,盒子模型
SegNet——论文笔记
目标检测中的IoU、GIoU、DIoU与CIoU
E-R图总结规范
指定区域内随机填充圆之matlab实现
Jenkins pipeline 自动部署实践
缓动动画,有关窗口的一些常见操作,BOM操作
53个全球免费学术资源数据库整理,查资料写论文必备【开学必备】
Nacos 原理
Hardware Knowledge: Introduction to RTMP and RTSP Traditional Streaming Protocols
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
ResNet详解:ResNet到底在解决什么问题?
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
子空间结构保持的多层极限学习机自编码器(ML-SELM-AE)
Computer knowledge: desktop computers should choose the brand and assembly, worthy of collection
Centos通过Docker搭建MySQL的PXC集群
狗都能看懂的Vision Transformer的讲解和代码实现
软件稳定性思考
MAML principle explanation and code implementation