key:本地文件包含漏洞+php伪协议
点击看到url中:114.67.246.176:10827/post/index.php?file=show.php
看到file,想到是一个文件包含漏洞。
1、file为关键字的get传递参数。
2、构造 file=php://filter/read=convert.base64-encode/source=index.php
3、得到base64编码,解码得到flag
注:1、php封装协议
2、file=php://filter/read=convert.base64-encode/resource=index.php的含义
首先这是一个file关键字的get参数传递
php://是一种协议名称
php://filter/是一种访问本地文件的协议
/read=convert.base64-encode/表示读取的方式是base64编码后
resource=index.php表示目标文件为index.php
3、为什么通过传递这个参数能得到源码
原因在于源代码中使用了include()函数,这个表示从外部引入php文件并执行,如果执行不成功,就返回文件的源码。
而include的内容是由用户控制的,所以通过我们传递的file参数,使include()函数引入了index.php的base64编码格式,因为是base64编码格式,所以执行不成功,会返回源码,由此我们得到了源码的base64格式,解码即可的到源码。
反观,如果不进行base64编码传入,就会直接执行,而flag的信息在注释中,是得不到的。
参考链接:https://blog.csdn.net/Mitchell_Donovan/article/details/111490374