在一些特定的应用场景中,可能会使用类似的URL来进行文件读取和解码操作。这种方式可以用于隐藏文件路径或对敏感信息进行保护。
所以我们使用
?file=//filter/read=convert.base64-decode/resource=flag.php
将 flag.php
文件的内容进行 Base64 编码,然后通过这个URL将编码后的内容传输给客户端,客户端再进行解码操作得到原始内容。
?file=//filter/read=convert.base64-decode/resource=index.php
获取源代码
使用php://input
是一个特殊的输入流,可以用来获取 HTTP 请求的原始请求体数据。
当使用 POST 方法提交表单或发送 JSON 数据等时,请求体中的数据会被传输到服务器。而 php://input
可以让开发者直接访问这些原始数据,而不需要依赖 PHP 的超全局变量 $_POST
或 $_REQUEST
。
使用 php://input
可以在 PHP 脚本中以流的形式读取请求体数据。例如,可以使用以下代码来获取 POST 请求的原始数据:
$data = file_get_contents('php://input');
file_get_contents()
函数用于读取文件的内容,而 php://input
可以被看作是一个特殊的文件,用于读取请求体数据。
需要注意的是,php://input
是一个只读流,一旦读取完毕,就无法再次读取。另外,如果请求体数据是以表单形式提交的,可以使用 $_POST
来获取解析后的表单数据,而不需要使用 php://input
。
总之,php://input
提供了一种直接访问 HTTP 请求体数据的方式,适用于需要自行处理请求体数据的情况
本题使用它会被过滤,因为源码里面使用了黑名单,如果是白名单include 直接包含文件了