刷题[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给出提示,可以看 ...
随机推荐
- 仿京东BOE官网 jQuery代码
$(function() { $("#chanping").mouseenter(function() { $("#column").slideDown(500 ...
- Shell编程—创建函数
1基本的脚本函数 函数是一个脚本代码块,你可以为其命名并在代码中任何位置重用.要在脚本中使用该代码块时,只要使用所起的函数名就行了. 1.1创建函数 有两种格式可以用来在bash shell脚本中创建 ...
- 【趣味设计模式系列】之【代理模式3--Cglib动态代理源码解析】
1. 图解 上图主要描述了Cglib动态代理的主要执行过程,下面做详细分析,以下源码使用的Cglib版本为3.2.12. 2. Enhancer源码分析 public Object create() ...
- 洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP
洛谷 P4284 [SHOI2014]概率充电器 概率与期望+换根DP 题目描述 著名的电子产品品牌\(SHOI\) 刚刚发布了引领世界潮流的下一代电子产品-- 概率充电器: "采用全新纳米 ...
- 百度官方给出的seo优化策略
http://www.wocaoseo.com/thread-157-1-1.html 因为要参加seo工程师考试了,这两天一直在学习seo的基础理论,昨天也写了备战seo工程师考试的文章,说实在话, ...
- 5G边缘计算:开源架起5G MEC生态发展新通路
摘要:本文尝试从边缘计算的角度来阐述了为什么要把边缘计算当做一种新的生产关系来构建,以及如何用开源来构建这种新的生产关系. 5G推动新一轮工业革命 过去人类经历了三次工业革命, ...
- windows下安装jdk+tomcat+maven并配置
一.下载安装jdk并配置 1.1 进行JDK下载 下载地址:一键直达 一般下载后,安装位置默认,一路下一步,一直到安装完毕-"关闭". 1.2 环境变量配置 不要管是不是一般情况, ...
- 序列号,IMEI,IMSI,ICCID的含义
什么是序列号? 序列号是一串标识你手机出生证明以及身材特征的信息,甚至还可用来识别是否为官方翻新机.你可以简单的将这一串数字分割为:aabccdddeef 的形式.拿iPhone 4为例 aa = 工 ...
- oeasy教您玩转linux010106这儿都有啥 ls
回忆上次内容 上个实验我们查询了 ls 的手册: man ls
- Hive 高阶应用开发示例(一)
Hive的一些常用的高阶开发 内容 1.开窗函数 2.行转列,列转行,多行转一行,一行转多行 3.分组: 增强型group 4.排序 5.关联 本次的内容: 内容1 和内容2,采用 ...