iwebsec靶场 文件包含漏洞通关笔记7-php://input伪协议(file_get_contents)

本文围绕php://input伪协议展开,介绍其原理,即能将post请求数据当作php代码执行,还说明了使用条件。同时讲解了file_get_contents()函数,结合第07关靶场进行源码分析,阐述如何构造post信息并利用该伪协议进行渗透。

目录

一、漏洞原理

1.php://input伪协议原理

2.php://input伪协议使用条件

3.file_get_contents()函数

4.file_get_content与include的区别

 (1)执行环境

 (2)功能用途

第07关 php://input伪协议

1.打开靶场

2.源码分析

3.伪协议利用1

(1)构造post信息

(2)利用

4.伪协议利用 2

(1)构造post信息

(2)渗透

一、漏洞原理

1.php://input伪协议原理

​php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行,如果存在文件包含漏洞,可将php://input作为文件名传入,同时在post中注入设置想要注入的代码,php执行时就会将post的内容作为php代码执行。

2.php://input伪协议使用条件

使用条件:
1.allow_url_fopen: on
2.allow_url_include:on

3.file_get_contents()函数

        在利用文件包含漏洞的时候经常会碰到file_get_contents()函数,这个函数的作用是把整个文件读入一个字符串中。file_get_contents() 是 PHP 中用于将整个文件读入一个字符串的函数。若在使用时未对输入进行严格处理,它可能会引发文件包含漏洞。

        file_get_contents() 函数可接受一个 URL 作为参数,当它被用于读取文件时,如果程序未对传入的参数进行严格验证和过滤,攻击者就能构造恶意的 URL 来读取服务器上的任意文件,甚至执行任意代码。

4.file_get_content与include的区别

        file_get_contents与include虽然后会引起文件包含漏洞,两者区别如下

特性include/requirefile_get_contents
代码执行会执行PHP代码不会执行PHP代码
文件包含漏洞高危中危

 (1)执行环境

  • file_get_contents():只是简单地读取文件内容,不会执行文件中的代码。例如,读取一个包含 PHP 代码的文件,返回的只是代码字符串,而不会执行这些代码。
  • include:会将包含的文件内容作为当前脚本的一部分来执行,包含文件中的代码会在当前脚本的环境中运行,能够访问和修改当前脚本的变量和函数等

 (2)功能用途

  • file_get_contents():该函数的主要功能是将整个文件的内容读取到一个字符串中。简单来说,它就像是一个文件内容的 “搬运工”,把文件里的文本、代码等数据原封不动地搬到一个字符串变量里,供后续程序处理,比如分析文件内容、对内容进行字符串操作等。
  • includeinclude 语句(以及与之类似的 require 语句)主要用于在当前脚本中包含并执行另一个文件的内容。可以把它想象成是将另一个文件的代码 “粘贴” 到当前文件中指定的位置并运行,常用于模块化开发,将公共的代码、配置文件等包含到不同的脚本中,实现代码的复用。

第07关 php://input伪协议

1.打开靶场

http://iwebsec.com:81/fi/07.php

 

2.源码分析

<?php

  require_once('../header.php');
  ?>
<html>
	<head>
		<title>php://input伪协议</title>
	</head>
	<h2>php://input伪协议</h2>
		<div class="alert alert-success">
			<p>/07.php?filename=php://input </p>
		</div>
	<body>
	
<?php
    echo file_get_contents("php://input");
	
?>

 如下所示关键源码中有file_get_contents函数,参数是"php://input", 通常file_get_content函数是结合代码审计做一些渗透。

<?php
    echo file_get_contents("php://input");
?>

这时候只要将参数通过post传入到服务器即可。

3.伪协议利用1

(1)构造post信息

I am a hacker!

(2)利用

如下所示,通过传入参数I am a hacker!使用file_get_content将内容输出到页面

4.伪协议利用 2

(1)构造post信息

POST注入语句

<script>alert(document.cookie)</script>

(2)渗透

如下所示,通过传入参数<script>alert(document.cookie)</script>!使用file_get_content将内容输出到页面,同时触发了XSS漏洞


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值