4.26文件上传学习

news/2024/5/19 23:52:16

一、文件上传

概念:(不赘述转web安全文件上传)[[9.6-9.7基础和过滤方式]]
前置知识:(除解析漏洞)后门代码需要以特定格式后缀解析,不能以图片后缀解析;

知识点

1、文件上传-前端验证

直接修改前端js代码,文件上传格式;

2、黑白名单

3、user.ini用处(文件包含

  • 上传.uer.ini文件,apache中同理配置文件.htaccess
    修改文件为

    auto_prepend_file = 1.jpg 或
    auto_append_file = 1.jpg (区别是一个文件前一个文件后)

  • 1.png文件()

  • 此时访问默认首页index.php文件(调用.user.ini)即可解析到1.png后门文件;

4、PHP语言特性

详细点

1、检测层面:前端、后端
2、检测内容:文件头、完整性、二次渲染

过滤上传文件特定内容组合;

<?echo '123';?> (前提开启配置文件short_open_tags=on,短标签)
<?=表达式;?>   如<?=eval($_POST=[x]);?>(不需要开启参数设置)
<% echo '123';%> (前提开启asp_tags=on)
<script language="php">echo '1';</script> (不需要修改开关)推荐2,4

内容绕过屏蔽[],转换成{}即可;

<?=eval($_POST=[x]);?> 改为<?=eval($_POST={x});?>

内容过滤括号(),反引号名执行;

<?=`cat ../fl*`?>

内容过滤反引号,包含日志文件,日志文件头UA写后门代码,寻找对应中间件的日志文件路径;
之后构造任意请求包含后门,后门将再日志文件中触发;

文件头过滤,常用文件头;

JPG : FF D8 FF E0 00 10 4A 46 49 46
GIF : 47 49 46 38 39 61 (GIF89a)
PNG: 89 50 4E 47

3、检测后缀:黑名单、白名单、MIME检测等

MIME解析:多用互联网邮件扩展类型,指某拓展名文件用一种程序打开,如声音audio,图片image

后端代码限制,抓包修改Content-Type验证格式;
其他非php的网站同理,上传其能解析的后缀后门;

大小写:修改后缀大小写如phP;

4、绕过技巧:多后缀解析、截断、中间件特性(解析)、条件竞争等

多后缀解析: 文件后缀修改如php5、phtml、phtm、php2、php3、phps(php别名)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Python-Flask-migrate安装和使用

在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。 环境…

MySQL-07.InnoDB数据存储结构

C-07.InnoDB数据存储结构 1.数据库的存储结构:页索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存…

以链表为基础实现链式队列——————遍历、入队、出队

以链表为基础实现链式队列 ​ 如果打算以链表作为基础来实现队列的操作,可以避免内存浪费以及避免内存成片移动,只需要确定队头和队尾即可,一般把链表头部作为队头,可以实现头删,把链表尾部作为队尾,可以实现尾插。​ 需要注意的点:遍历队列需要备份地址 出队需要考虑空…

Windows设置开机自启动项

一、常见软件的开机自启设置大部分安装的软件,在设置中都带有“设置开机自启”的选项,直接在软件本身的设置中勾选相应开关项即可。 二、本身无开机自启的软件或一些绿色便携式的软件 (一)实现原理Windows自带了一个启动文件夹,在此文件夹中的软件都会在开机后进行启动操作…

Unsortbin attack原理及分析

Unsortbin attack原理 ✔️条件:首先要实现Unsortbin attack前提是可以控制Unsortbin attack chunk的bk指针 ✔️目的:我们可以实现修改任意地址为一个比较大的值 ✔️原理:1.Unsortbin的来源 1.当一个较大的 chunk 被分割成两半后,如果剩下的部分大于MINSIZE,就会被放到 …

npm run dev, serve和build的区别

真实命令分别为npm run vite,npm run vite build,npm run vite preview ctrl+c结束运行的npm项目

谷歌 hackbar 不能使用的问题

谷歌 hackbar 不能使用的问题 下载 hackbar 插件:https://github.com/Mr-xn/hackbar2.1.3 解压文件,将其拖入 chrome 扩展程序中点击详情,点击下面来源的链接 会跳转到插件的安装位置,进入theme/js文件,打开hackbar-panel.js文件,将以下三处disable_hackbar()函数替换成i…

数据结构_链表_双向循环链表的初始化、插入、删除、修改、查询打印(基于C语言实现)

通过C语言实现双向循环链表的相关功能, 并通过了Linux平台测试, 注释完整.版本:2024年4月26日 V1.0 发布于博客园/*** @file name : DoubleLinkedList.c* @brief : 实现双向循环链表的相关功能* @author :RISE_AND_GRIND@163.com* @date :2024/04/26* @version :…