[HCTF 2018]WarmUp

[HCTF 2018]WarmUp WP

打开靶机以后是一个滑稽笑脸,然后查看一下页面源代码。

在这里插入图片描述

发现了source.php,这肯定要看一看的呀。

在这里插入图片描述

这个php文件是一大段代码

在这里插入图片描述

白名单有两个,打开另一个叫hint的,可以知道flag的文件名叫ffffllllaaaagggg。

一点一点来分析就行,最下面的一段是程序的全局代码(应该是这么叫的吧),得三个都满足才能得到文件,也就是要求这个file不为空,为字符串,还能通过上面的checkfile函数,才能得到文件。

在这里插入图片描述

再来分析一下这个checkfile文件

在这里插入图片描述

有四个if语句,第一个是return false,所以要保证第一个不满足,然后再剩下的三个return true的语句中,随意满足一个就可以。

然后再逐一分析一下每一个语句的意思:

  1. 首先是定义了一个白名单。
  2. 然后下面这个if的意思是,为零或不是字符串就返回false。
  3. 第二个if是检查你的page是不是白名单的内容,如果是就直接返回true。
  4. 如果page里面带有?,就截取?之前的值赋值给_page。
  5. 第三个if再检查是否在白名单里面。
  6. 再次给_page赋值,将其赋值为url解码后的page。
  7. 如果_page有?,则截取-page(URL解码后的page)两个?中间的值。
  8. 检测_page是否在whitelist中。
  9. 如果上面四个语句均未有返回值,则返回false。

不难看出,前三个if语句很难完成

第一个返回值不可用,第二个直接判断也不行,第三个是截断?之前的,也不行,只有通过第四个构造。

第四个因为在服务器会解码一次,然后checkfile函数又解码一次,所以要对?进行url编码两次,就是%253f。

直接放payload。

/index.php?file=source.php%253f../../../../../ffffllllaaaagggg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值