攻防世界web高手进阶区:Web_php_include
进入链接,可以看到部分源码:
分析一下,这里可以用GET方式上传两个参数:hello和page
其中,page会先通过strstr(A,B)函数 [在A中查找是否有B] 检查其中是否有"php://",如果有则会通过str_replace(A,B,C)函数 [将C中所有A替换为B] 将"php://"删去。
所以基本上就不可能用php://伪协议
但可以尝试data://text/plain
我们如果要知道flag在哪里,首先得知道有哪些文件
而要知道有哪些文件,又得先知道文件的根目录
这时候可以使用输出$_SERVER[‘DOCUMENT_ROOT’]的方式来探知所在目录
配合data://text/plain使用,结果如下图:
?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT'];?>
现在我们可以知道目录为/var/www,接下来就是探知该目录下的文件
我们可以使用scandir(A)函数 [以数组形式返回目录A中的文件]:
这里注意两点:
1、php中输出数组用print_r()函数
2、scandir()中目录参数是字符串形式,所以要加“”
(我才不会告诉你我忘了)
那么现在我们可以看到目录下的文件,很明显这个fl4gisisish3r3.php就是我们的目标
那么就直接show_source()函数查看一下:
这样我们就得到了flag:ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}