刷题[HCTF 2018]WarmUp
解题思路
进入页面之后,一个大大的滑稽。
查看源码
查看源码发现有source.php 。打开

发现还有一个hint.php。打开发现

由此可知是代码审计了
解题
代码审计

先看此段代码,大致意思是。如果提交过来的file不是空的,并且是字符串,经过了emmm类中,checkFile函数的过滤。那么就执行包含文件。由此可知可能存在文件包含,目录穿越的漏洞。而要包含的就是ffffllllaaaagggg。
现在看如何绕过过滤

主要看这段代码,这段代码的意思是
获取传入的参数位数,然后截取前该位数的字符。
举个例子,传入参数是flag.php,首先经过mb_strpos获取位数,为8.然后经过mb_substr截取flag.php的前八位,也就是flag.php。
然后需要该参数在白名单里,也就是截取第一个?后的值为hint.php或source.php
然后经过url解码后再进行一次过滤,如果最后返回真,即可包含文件
文件包含
payload:?file=source.php%253F../../../../../ffffllllaaaagggg
确保url解码后能通过白名单。浏览器会解码一次,所以?二次编码,%253F,这里是php的一个特性:
?两次编码可以实现跨目录,#二次编码也可以
$page经过两次解码 $_page=source.php?../../../../../ffffllllaaaagggg
经过函数截取?前的内容,source.phph可通过白名单检验,然后通过此include $_REQUEST['file']
实现文件包含,因为source.php也被解析为目录,通过目录穿越即可到达,获得flag
总结思路
核心思路:
- 查看源码得知本题考点为代码审计,文件包含,目录穿越
- 确定获得flag值通过文件包含,本题共有四个可有true返回的条件,构造一个满足的条件即可
- php将二次编码的?前的内容视为目录
知识点
- 代码审计
- 目录穿越
- 文件包含
刷题[HCTF 2018]WarmUp的更多相关文章
- [原题复现]HCTF 2018 Warmup(文件包含)
HCTF 2018 Warmup 原题复现:https://gitee.com/xiaohua1998/hctf_2018_warmup 考察知识点:文件包含漏洞(phpmyadmin 4.8.1任意 ...
- 攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup
攻防世界 WEB 高手进阶区 HCTF 2018 warmup Writeup 题目介绍 题目考点 PHP代码审计 Writeup 打开 http://220.249.52.134:37877 常规操 ...
- [BUUOJ记录] [HCTF 2018]WarmUp
BUUOJ Web的第一题,其实是很有质量的一道题,但是不知道为什么成了Solved最多的题目,也被师傅们笑称是“劝退题”,这道题的原型应该是来自于phpMyadmin的一个文件包含漏洞(CVE-20 ...
- [HCTF 2018]WarmUp
靶场首页 打开靶场后,查看源码即可看到<!--source.php--> 打开source.php页面 代码如下 <?php highlight_file(__FILE__) ...
- 刷题[SUCTF 2018]GetShell
解题思路 进入upload,发现有源码,代码审计 代码审计 大概意思就是,读取我们上传的文件,截取第五位之后的内容,与黑名单不匹配才能上传成功 我传的是一个空的txt文件,发现会变成php文件,那好办 ...
- CTF-WEB-HCTF 2018 Warmup
题目链接 攻防世界-Warmup 解题思路 [原题复现]HCTF 2018 Warmup(文件包含)
- 刷题记录:[BUUCTF 2018]Online Tool
目录 刷题记录:[BUUCTF 2018]Online Tool 一.知识点 1.escapeshellarg和escapeshellcmd使用不当导致rce 刷题记录:[BUUCTF 2018]On ...
- PKUWC&SC 2018 刷题记录
PKUWC&SC 2018 刷题记录 minimax 线段树合并的题,似乎并不依赖于二叉树. 之前写的草率的题解在这里:PKUWC2018 minimax Slay the Spire 注意到 ...
- Buu刷题
前言 希望自己能够更加的努力,希望通过多刷大赛题来提高自己的知识面.(ง •_•)ง easy_tornado 进入题目 看到render就感觉可能是模板注入的东西 hints.txt给出提示,可以看 ...
随机推荐
- Windows如何快速远程到另一台Windows并管理多个远程服务器
Windows如何远程到另一台 Windows管理多个远程服务器 Windows第三方远程管理工具 准备远程机器 开启远程机器的远程桌面功能 首先在此电脑(我的电脑)图标上点击鼠标右键,选择" ...
- .NET 数据库事务的各种玩法进化
事务是数据库系统中的重要概念,本文讲解作者从业 CRUD 十余载的事务多种使用方式总结. 以下所有内容都是针对单机事务而言,不涉及分布式事务相关的东西! 关于事务原理的讲解不针对具体的某个数据库实现, ...
- js对象数组新增、修改时的验证是否重复的逻辑
JS代码: // 定义数据集合 const persons = [ { id: 1, name: '张三' }, { id: 2, name: '李四' } ] console.log('') con ...
- 据说这个是可以撸到2089年的idea2020.2
声明:本教程 IntelliJ IDEA IDEA2020.2破解 激活方式均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除 注意: 本教程适用于 JetBrains 全系列产品 I ...
- 新网站seo如何优化
http://www.wocaoseo.com/thread-189-1-1.html 做seo优化也有一段时间了,有做过自己的博客,自己的论坛,也有做过公司企业的网站,有同时一个人完成8个 ...
- Javascript常见数据类型API
1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象 ...
- 洛谷 P4995 跳跳!
思路 贪心 从大到小排序,然后反复横跳,记录两个指针 \(l=1, r=n\),从 \(1\) 跳到 \(n\),再从 \(n\) 跳到 \(2\),然后从 \(2\) 跳到 \(n - 1\)--, ...
- 递归方式---通过子级id,获取子级和父级Name
#region 递归--返回 父级|子级 名称 #region --返回 父级|子级 名称 public string RetrurnTypeNames(string TypeId) { String ...
- Kibana的安装
了解ELK Kibana 安装 Kibana的版本要和ES的一致 下载完毕后解压 这个解压就有点慢了 ELK的东西基本都是开箱即用的 解压后的目录 进入bin 双击启动kibana.bat 哎:启动从 ...
- 10 张图聊聊线程的生命周期和常用 APIs
上一篇文章我们聊了多线程的基础内容,比如为什么要使用多线程,线程和进程之间的不同,以及创建线程的 4 种方式.本文已收录至我的 Github: https://github.com/xiaoqi666 ...