[HCTF 2018]WarmUp
一些函数
empty() 函数用于检查一个变量是否为空。
bool empty ( mixed $var )
当 var 存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE。
以下的变量会被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
is_string函数
is_string ( mixed $var ) : bool
如果 var 是 string 则返回 true,否则返回 false。
php mb_strpos()函数
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
语法:
mb_strpos (haystack ,needle )
参数:
haystack:要被检查的字符串。
needle:要搜索的字符串。
F12查看源码
发现php文件,打开
代码审计题
先查看白名单hint.php
猜测flag在ffffllllaaaagggg中利用include得到flag
先看下面的判断
判断file不是空,是字符串,过类的checkFile,否则打印滑稽图
checkFile中有3个返回ture
第一个if判断page是否为空是否为字符串
第二个判断是否存在白名单中,
截取page ?前的部分,没有则不截掉
这段代码会截取ffffllllaaaagggg的长度,然后将hint.php赋值给$_page,因为ffffllllaaaagggg在白名单内,所以绕过了检测,另外代码没有进行…/目录穿越的过滤
所以尝试一级一级的穿越,查找flag文件
第三个判断是否在白名单中
$_page = urldecode($page);
对page解码
第四个判断page是否在白名单中
打开hackbar 进行payload
http://1b07fa7e-56d2-4d5b-990e-79b12eab4edc.node3.buuoj.cn/source.php?file=source.php?/…/ffffllllaaaagggg
没有回显,也没有滑稽图证明可以,接下来尝试一级一级的穿越,查找flag文件
最后四级目录找到flag