BUUCTF-Web-[HCTF 2018]WarmUp

1. 题目描述

题目链接:戳我💋

2. 解题过程

打开链接看到一个滑稽的表情

F12 看到有 source.php

img

在地址栏输入 source.php

img

代码审计

发现有个hint.php,进去看一看,得到一句话flag not here, and flag in ffffllllaaaagggg

可能flag就在ffffllllaaaagggg里面

粗略的看了一下整体代码,发现是白名单验证,文件包含只能包含source.php和hint.php

看下主要的,首先file不能为空,file必须是字符串,还要通过checkFile()函数的检查,才能够包含。

检查还有三次,第三次经过了url解码,感觉有点问题,可是这个得怎么绕啊!!!百度启动!!!

经过查阅不少资料,得到这是phpmyadmin 4.8.1的一个远程文件包含的漏洞!!!!

既然如此,那就一步一步来分析一下checkFile()函数:

 

首先设置了一个白名单,只包含source.php和hint.php,第一个if检查是否存在$page并且是否为字符串。

检查$page是否在白名单中,是的话返回true。接下来,两个函数一个mb_substr和mb_strpos,总的意思就是截取变量page中?前面的字符串,然后再进行白名单校验。

考虑了URL编码的缘故,再一次解码之后,进行校验。

分析完代码后就可以开始构造payload了,传递一个参数file=source.php?/../../../../../../ffffllllaaaagggg,目录穿越,当然还要把?进行两次url编码,所以最后的payload为file=source.php%253f/../../../../../../ffffllllaaaagggg,首先,第一次验证肯定过不了,第二次截取完也过不了,第三次,经过url解码之后,我们构造的payload就变成了source.php?/../../../../../../ffffllllaaaagggg,很显然,它是截取?前面的进行校验,我们这的source.php在白名单中,所以返回true,最后通过目录穿越的到ffffllllaaaagggg里面的内容,也就是flag。

payload:

file=source.php%253f/../../../../../../ffffllllaaaagggg

获取 flag

img

3. 所需工具

4. 写在最后

本文完
敬爱与明天🌹

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇