1.WarmUp
获得靶机后,进入网址,发现如上图。一如既往,查看源码。发现一个source.php,必然进去一探究竟
出现源码,那么就要开始进行代码审计了呀。
先随便都看看嘛,所以咱先去hint.php去看看。
虽然没有直接获得flag,但是知道了flag在哪个目录中。再返回查看源码,其实此时可以猜到这道题考的就是一个文件包含了
首先看到这个if的,这三个限制分别是,file变量不能为空,传入的值要为字符串类型,传入的值要进入checkFile函数进行检查。所以,我们去审计checkFile函数
很明显,我们需要满足这四个if语句,在第四个if语句中,它是先进行url解码再截取,因此我们可以将?经过两次url编码,在服务器端提取参数时解码一次,checkFile函数中解码一次,仍会解码为’?’,
首先我们先去将?进行两次url编码后得到%253f,尝试构造paylaod如下:
?file=source.php%253F/…/…/…/…/ffffllllaaaagggg
这里,我们由于不知道ffffllllaaaagggg这个文件夹在哪,所以可以一次一次尝试。最终,获得本次flag
flag{
2c3a0aac-0df5-4643-9301-169b4ac9c7d2}