特别经典的一个题哈,也是很久没发博客了,给大家分享一下。
--------------------------------------------------------------------------------------------
地址我就不发了,很多网站都有这个题
进入界面首先是一个滑稽的表情
右键查看源代码
提示我们查看source.php
代码审计捏~
先分析一下这段,file的值不能为零且为字符串还要在checkfile函数里面,这样会包含file并且退出,否则给你一张滑稽。
因为include能让我们执行文件上传漏洞或文件执行漏洞,所以我们要满足上面的三个条件
那么对于三个条件的满足其实就是满足上面代码的四个if
变量page相当于file.
第一个if
file的传参如果为空且不是字符串则输入you can't see it
所以我们传的参要为字符串
第二个if
file传参的变量要在函数whitelist函数中,意思就是file要传参上面whitelist的两个白名单,就是source.php或hint.php
这段的意思是在传的参数后面添加一个?并且读取到?
进行一次url编码
又因为网页会自动进行一次url编码
而且根据上面的代码审计我们要把?进行两次url编码,因为如果不编码就无法执行后面的内容了
又因为白名单里面定义了两个文件 ,其中查看hint.php可以发现flag在ffffllllaaaagggg文件
所以构造
payload为file=source.php%253F../../../../../../ffffllllaaaagggg
为什么这么多../呢?试出来的,当前目录下没有就尝试找上一级目录了。、
当然用 hint.php也是一样捏