Buuctf-web-[HCTF 2018]WarmUp
首先打开是一张表情图片,然后直接查看源码。发现。
有个source.php 的注释,而源码里没有什么可寻的信息,直接查看source.php
发现是一个程序。提示我们另一个地址hint.php,
提示我们在ffffllllaaaagggg
request函数包含了get和post方法,$_REQUEST是需要通过POST或者GET参数来赋值的,接收参数,file.
然后if里的第一个判断是判断它接受的是否为空,第二个是判断是否为字符串,第三个将它传给函数check File。都满足后传给函数checkFile.否则打印图片。
然后看checkFile函数。
1,首先将传入的参数赋给page。
2,然后声明了一个数组
$whitelist值源自source.php 和hint.php
3,如果page变量不存在或者非字符串,返回false
4,如果变量page存在于whitelist中返回true
5,mb_substr() 函数返回字符串的一部分,
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置
$_page里存放了函数
mb_substr
截取$page中'?'前部分,若无则截取整个$page
然后再判断变量page存在于whitelist中返回true
6,然后url解码了一次page
然后因为网页给page解码了一次,函数中也解码了一次,所以?要url编码两次,为%253F
所以直接给file赋值view-source:http://e9cdbb91-074c-488d-8ae9-91cf504329d2.node3.buuoj.cn/source.php?file=source.php%253F../../../../../../../../ffffllllaaaagggg
因为不知道flag路径,所以多次尝试