BUUCTF-WarmUp
打开题目看到了一个贱贱表情,如下:
老规矩,F12看看有啥。打开发现提示了source.php。输入后发现源码:
发现了hint.php,进去看看。看到提示:
flag可能就在ffffllllaaaagggg中。
审计代码:
百度后发现这是:添加链接描述
checkfile()函数
1.定义了一个白名单:source.php和hint.php,判断
p
a
g
e
是
否
为
空
、
是
否
为
字
符
串
。
2.
判
断
page是否为空、是否为字符串。 2.判断
page是否为空、是否为字符串。2.判断page是否在白名单里,若存在返回true;
3.考虑到page有参数的情况,
p
a
g
e
是
取
出
_page是取出
page是取出page问号前的东西,然后再判断$_page是否在白名单里,若存在则返回true;
4.如果上一步判断失败,则又考虑了url编码的问题,因为url在传入以后服务器会自动进行一次解码。因此传入二次编码后的内容,就可以使checkfile返回true。
分析完就开始构造playload:
传入?file=hint.php%253f../../../../../../../../ffffllllaaaagggg
,因为服务器会自动解一次码,所以playload变为hint.php%3f../../../../../../../../ffffllllaaaagggg
,又一次url解码后,其playload变为hint.php?../../../../../../../../ffffllllaaaagggg
,然后截取问号前面的hint.php判断在白名单里返回true。
所以playload:
file=hint.php?/../../../../../../ffffllllaaaagggg
file=hint.php%253f/../../../../../../ffffllllaaaagggg