文件包含file_get_contents_截断在文件包含和上传中的利用

本文介绍了PHP中的文件包含漏洞利用,特别是file_get_contents结合%00截断的原理和利用方式。内容涉及本地文件包含(LFI)、PHP版本与magic_quotes_gpc设置对截断的影响、文件路径长度限制以及文件上传过程中的截断利用。通过实例代码展示了如何利用这些漏洞进行文件包含和上传攻击。
摘要由CSDN通过智能技术生成

a7aaf8219ea8a553316e036d1d85e241.png

截断大概可以在以下情况适用

  • include(require)
  • file_get_contents
  • file_exists
  • 所有url中参数可以用%00控制

0x01. 本地文件包含1.1 截断类型:php %00截断

截断条件:

php版本小于5.3.4 详情关注CVE-2006-7243
php的magic_quotes_gpc为OFF状态
漏洞文件lfi.php

<?php$temp = $_REQUEST['action'].".php"; include$temp; // include造成了LFI和php的%00截断?>

要include的password文件

Password

<?phpphpinfo();?>

利用代码:lfi.php?action=password%00
注意:url正宗%00是被会url解码成0x00,所以可能导致截断。

password文件被成功包含并且执行phpinfo()函数。

如果没有截断条件,lfi.php就只能包含php扩展名的文件。
相反,如果有截断条件,lfi.php可以包含任意文件的扩展名。

当把magic_quotes_gpc打开,php版本依然是5.2.9时,再测试,结果%00被转义成了0两个单体字符,不再具有截断功能。

f407bfe0310b89948c629ae818ce1037.png

原因是:当打开magic_quotes_gpc时,所有的 '(单引号),"(双引号),(反斜线)和 NULL字符(%00)都会被自动加上一个反斜线进行转义。还有很多函数有类似的作用 如:addslashes()、mysql_e

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 PHP ,可以使用 file_get_contents() 函数读取文本文件,但是它不能直接读取 .doc 文件,因为 .doc 文件不是纯文本格式。如果你想读取 .doc 文件,可以使用第三方库来实现。 其一个常用的库是 PHPWord,它可以帮助你读取和写入 Microsoft Word 文档。你可以使用 Composer 进行安装: ``` composer require phpoffice/phpword ``` 然后可以使用以下代码读取 .doc 文件: ```php require_once 'vendor/autoload.php'; $phpWord = \PhpOffice\PhpWord\IOFactory::load('path/to/document.doc'); // 获取整个文档内容 $fullText = $phpWord->getText(); // 获取第一段内容 $section = $phpWord->getSection(0); $firstParagraph = $section->getElements()[0]; $firstTextRun = $firstParagraph->getElements()[0]; $firstText = $firstTextRun->getText(); ``` 在上面的代码,我们使用 `PhpOffice\PhpWord\IOFactory::load()` 方法加载 .doc 文件,并使用 `$phpWord->getText()` 方法获取整个文档的文本内容。如果你只想获取第一段内容,可以使用 `$phpWord->getSection(0)` 获取第一段,然后使用 `$section->getElements()[0]` 获取第一个元素,即第一个段落,再使用 `$firstParagraph->getElements()[0]` 获取该段落的第一个元素,即第一个文本运行,最后使用 `$firstTextRun->getText()` 获取文本内容。 需要注意的是,PHPWord 仅支持读取 .docx 格式的文件,如果你需要读取 .doc 格式的文件,需要将其转换为 .docx 格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值