知识点:
php反序列化长度变化尾部字符串逃逸
目录扫描发现www.zip,下载得到源码
源码有index.php,输入账号密码后会进入profile.php,还有register.php、updata.php、class.php和config.php
flag值在config.php中,想办法访问到其内容
通过seay代码审计找到一点线索
看到profile.php中存在任意文件读取漏洞,前面还有反序列化
现在我们有个大体思路了,update.php中有一个$profile数组变量,这个数组里有$phone, $email, $nickname, $photo几个变量,序列化后以profile字段存入数据库,而我们如果能控制photo变量为"config.php",则能在访问profile.php时获得base64编码之后的config.php源码。
对photo的操作在updata.php
update.php对传入的变量做了简单的检查
前两个变量是没有按照规则匹配到文本就执行die,而第三个变量nickname是如果匹配到非字母数字或者长度大于10就die,这里是我们可操作的,控制nickname为一个数组,这样两个判断条件为false或null, 绕过长度的限制,则可以绕过这正则表达式,就不会die。
在class.php中用update_profile()函数对$profile进行处理
filter函数进行了过滤
将select、insert、update、delete、where替换为hacker
整个过程就是:序列化、过滤替换、反序列化、文件读取,就是ctf中反序列化字符逃逸的常见套路。
nickname赋值为一下形式即可:
nickname[]=wherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewherewhere";}s:5:"photo";s:10:"config.php";}

nickname经过序列化后,长度已经被固定(s的值),在反序列化时,将where替换为hacker,每替换一次就多一个字符,";}s:5:"photo";s:10:"config.php";}一共是34个字符,目的是将这34个字符挤出nickname,继而成功伪装为我们想要的photo值,并闭合序列化字符串,后面原来的photo值就被抛弃了。因为需要挤出34个字符,所以nickname中需要34个where,最后就形成了上面的形式。

操作:
在register.php界面注册一个账号并登陆,登陆后跳转到update.php界面,上传图片并抓包
修改nickname的值,并将其修改为数组
返回profile界面,点击打开
源代码中找到base64值
解码得到flag

OCTF2016--piapiapia相关推荐

  1. [0CTF 2016]piapiapia php反序列化字符串逃逸

    一.php反序列化字符串逃逸 <?phpclass user{public $user = 'admin';public $pass = 'passwd'; }$a = new user(); ...

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

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

  3. [0CTF 2016] piapiapia

    piapiapia 猜测:SQL注入.弱口令,顺便扫一下目录 SQL注入失败,弱口令和目录扫描没有测试(过快扫描网站,返回429),服务器还是挺好的,从网上得知/www.zip 测试过后,发现 ind ...

  4. BUCTF[0CTF 2016]piapiapia

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

  5. BUU [0CTF 2016]piapiapia

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

  6. BUUCTF-WEB 【0CTF 2016】piapiapia 1

    考点:php反序列化字符长度逃逸 打开题目 一般看到登录框,就以为是sql注入题,这道题不是. dirsearch扫网站目录 python3 dirsearch.py -u "http:// ...

  7. [0CTF 2016]piapiapia -php序列化溢出

    题目分析 上来是一个登录页面:尝试注入无效: 然后扫后台:扫到源码www.zip 发现有注册页,注册登陆后可以填写自己的信息以及上传头像,走过一遍流程之后发现无法SSI也无法上传图片马: 源码分析 u ...

  8. piapiapia(代码审计、反序列化逃逸、函数绕过)

    目录 wp 文件内容 尝试 主要部分 反序列化逃逸 流程 总结 wp 进入题目,一个登录框,F12和源代码没有看到提示,robots.txt也没有东西.于是试一试访问www.zip,没想到有源码,省了 ...

  9. [0CTF 2016]piapiapia总结(PHP序列化长度变化导致尾部字符逃逸)

    这道题感觉很难,要是比赛中出这种题我肯定做不来,所以我耐着性子慢慢分析这道题,最后居然自己做了个七七八八,只剩下一点点就完全做出来了. 下面把我做这道题时的思路一步一步记录下来,希望能够彻底巩固. 一 ...

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

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

最新文章

  1. C语言应用于LR中-如何得到数组长度
  2. 支持实践教学:清华大数据能力提升项目举办CIKM AnalytiCup2017冠军团队经验分享会
  3. ArrayList的sublist注意
  4. python nameko用于生产_用 Python、 RabbitMQ 和 Nameko 实现微服务
  5. PlayFab(二)如何通过Demo应用来进一步熟悉Playfab
  6. 网络编程之 osi七层协议
  7. VB 获得磁盘的文件系统
  8. RHEL4.4安装YUM
  9. 洛谷——P1424 小鱼的航程(改进版)
  10. python可以做什么工作-学了那么多年python到底可以找什么工作?
  11. 数据湖产业生态联盟简介
  12. 2007年第一份成绩单——关于《WebWork in Action》中文版
  13. RealVIZ Stitcher Unlimited v5.5.1 1CD
  14. 银联支付,实现代码对接
  15. 副业真没想你的这么容易做!
  16. 摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文 名“GPU编程与CG语言之阳春白雪下里巴人”
  17. 终极解锁邮件签名证书(S/MIME证书)
  18. 《UNIX/LINUX系统管理I》课程学习总结
  19. Chrome OS 与 Android 的生死爱欲
  20. QGraphicItem实现中心旋转

热门文章

  1. 【面试官一定会问的几题】视觉过关挑战赛 - 附源码
  2. matlab编写多目标测试函数SCH, ZDT, MOP, DTLZ
  3. Iphone连接Openwrt的IPSEC服务器
  4. 测试udp端口通不通linux,windows Centos ubuntu debian等测试UDP端口协议的连通性
  5. 村长选举c语言程序,菜鸡学C语言之摸鱼村村长
  6. 警惕分布式常见的这十大坑
  7. ViewPager标签栏滑条
  8. hibernate主键生成策略native,assigned,uuid的区别
  9. dw自动滚动图片_Dreamweaver实现滚动图片文字
  10. 相差天数时分秒_PHP 小方法之 计算两个时间戳之间相差的日时分秒