include文件包含伪协议

虽然学习了php的include文件包含基础,但是在实际的ctf题目中还是没有能够很好的运用,因此在本文写下在ctf中会用到的绕过方式
【include文件包含伪协议】部分内容来源于https://www.csdn.net/tags/NtzacgzsODM1MDAtYmxvZwO0O0OO0O0O.html
首先是ctf-show萌新web题目14
include文件包含伪协议
文章图片

题目过滤掉了很多元素,但是题目又提示了我们flag就在config.php文件里
看了很多大佬的做法,他们大部分是运用include文件包含来完成的
include文件包含伪协议
文章图片
通过大佬的解释,这payload的理解大概就是利用include传入一个变量,但系统不会去检查传入的这个变量,同时?>是用来闭合前面的语句从而进行实现运行
百度了一手,php伪代码构造payload:
?file=php://filter/read=convert.base64-encode/resource=flag.php
【file://协议】
file://:用于访问本地文件系统,因此后面需要跟上文件的绝对路径和文件名
file://协议在双off情况下也可以正常使用
allow_url_fopen:off/on
allow_url_include:off/on
【php://协议】
php://访问各个输入和输出流(l/O streams),在ctf中经常使用的是php://filter和php://input,而php://filter用于读取源码,php://input用于执行php代码
!!php://filter读取源代码并进行base64编码输出,不然会直接当做php代码执行就会看不到源代码内容!

    推荐阅读