文件头

php phar反序列化任意执行代码

丶灬走出姿态 提交于 2019-11-30 01:46:50
2018年 原理 一。关于流包装stream wrapper 大多数的文件操作允许使用各种URL协议去访问文件路径,如data://,zlib://,php:// 例如常见的有 include('php://filter/read=convert.base64-encode/resource=index.php') include('data://text/plain;base64,xxxxx') phar://也是流包装的一种 二。phar原理 ① phar是一种压缩文件,其中每个被压缩文件的权限、属性信息都放在这部分。并且这部分 以序列化的形式存储用于自定义的meta-data。 ② 对于phar文件的stub,可以理解为一个标志,他的格式是固定的 ……<?php ……; __HALT_COMPILER();?> 也就是必须要__HALT_COMPILER();结尾才可以,否则无法识别 ③ 如果要生成phar文件就必须要将php.ini中的phar.readonly设置为off ④ 在一些文件函数通过phar://伪协议解析phar文件时都会将meta-data反序列化。 受影响的函数有 fileatime filectime filemtime file_exists file_get_contents file_put_contents file filegroup

Spring配置文件头及xsd文件版本浅析

二次信任 提交于 2019-11-29 21:40:13
Spring配置文件头及xsd文件版本浅析 一、Spring配置文件头 最初Spring配置文件的头部声明如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" 3 "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> 4 <beans> 5 6 </beans> 说明: 1、第一行表示xml声明,任何格式良好的xml文档都必须第一行是声明。相当于告诉解析器这个是xml文档,你给我用xml解析器解析。 2、dtd声明,表示该xml里的元素和属性等需符合spring-beans-2.0.xsd这个文档类型定义标准。 3、DTD:文件的文件类型定义(Document Type Definition)可以看成一个或者多个 XML 文件的模板,在这里可以定义 XML 文件中的元素、元素的属性、元素的排列方式、元素包含的内容等等。 因为DTD的一些局限性,以及 XML Schema对数据类型和命名空间的支持。 XML Schema 很快将 DTD 取而代之 被XML Schema 取代后的Spring 配置: 1 <?xml version="1.0" encoding="UTF-8"?

通过代码演示简单的BMP文件操作

孤人 提交于 2019-11-29 14:57:45
这里演示写出。主要难点是BMP文件头的生成。标准的BMP文件头为54个字节,可采用结构体保存。 在保存文件头时,应当把编译器的对齐优化关掉,否则BM_Header结构体的长度会变成16。 程序的基本操作是先定义BM_Header和BM_Info文件头,检查运行环境是否正确,然后打开一个文件,先写出BM_Header和BM_Info文件头,再通过一个循环逐像素地以 [B, G, R] (蓝、绿、红,小头端)的顺序写出图像信息,直到把一个图像写完。 这段代码没有考虑比特填充,所以为了便于Windows快速存取,只支持(4×M, N)的分辨率。 参考资料:BMP文件格式详解(BMP file format) https://www.cnblogs.com/Matrix_Yao/archive/2009/12/02/1615295.html 程序在C-Free 4.0,mingw2.95编译器下编译通过。 #include <stdio.h> typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef signed char int8_t; typedef signed short int16_t; typedef signed int

文件上传漏洞(File Upload)

北战南征 提交于 2019-11-29 02:19:37
简介 File Upload,即文件上传漏洞,通常是由于对用户上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马,病毒,恶意脚本等获取服务器的webshell权限,并进而攻击控制服务器,因此文件上传漏洞带来的危害常常是毁灭性的。简单点说,就是用户直接或者通过各种绕过方式将webshell上传到服务器中进而执行利用。例如,如果你的服务器为php环境,用户上传了一个php一句话木马,并通过菜刀连接获取webshell,就可能对你的服务器文件进行篡改甚至执行命令。 文件上传校验方法 客户端javascript校验(一般只校验后缀名) 当客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消息,前端的 js 脚本就对文件的扩展名进行检测来判断是否是可以上传的类型 服务端校验 文件头content-type字段校验 后端通过对上传文件的MIME类型进行黑白名单检测过滤 文件内容头校验 不同的文件都有不同的文件头,文件头就是为了描述一个文件的一些重要的属性,它告诉了打开并处理该文件的程序这些属性。有些上传接口会检测你上传的文件头信息以此来判断是否为正真的文件类型,比如 jpg 格式图片头部是 JFIF ,gif头部是GIF89a,png头部是%PNG。 校验文件大小 一些上传接口通过函数比如 getimagesize()

oracle scn重温

寵の児 提交于 2019-11-28 17:08:41
SCN(system change number) 系统更改号 RBA (redo block address)onlin redo log的重做块地址 select dbms_flashback.get_system_change_number from dual; 系统当前的SCN SCN的更新触发是由commit来进行的,每隔3秒种系统也都会刷新一次SCN CKPT进程是在checkpoint发生的时候将数据库当前的SCN更新入数据库文件头和控制文件当中,DBWn进程将buffer cache中的脏数据块(dirty block)写到数据文件中,而是ckpt在更新控制文件和数据文件头的有关信息后,通知DBWn进程,产生一个检查点,在产生检查点的时候,DBWn进程会将buffer cache中的脏数据(当前online redo log对应的脏数据),写入我们的数据文件当中,基本就是这么一个循环过程,ckpt进程还会在控制文件当中记录RBA,这个地址用来标志实例恢复的时候需要从日志中的那个位置开始,也就是一个checkpoint对应一个rba,当instance recovery(实例恢复)的时候oracle就会知道从那个检查点开始在redo的那个rba开始介质恢复! 创建检查点(checkpoint)的条件: 1.alter system checkpoint    2

DVWA File Upload 通关教程

ⅰ亾dé卋堺 提交于 2019-11-28 00:02:43
File Upload,即文件上传。文件上传漏洞通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的。 先看常规的文件上传操作: 客户端上传: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>文件上传操作</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="username"><br /> 头像:<input type="file" name="img"><br /> <input type="submit" value="提交"> </form> </body> </html> 在HTML <form>标签中enctype属性规定在发送到服务器之前应该如何对表单数据进行编码。 它的值有三种: application/x-www-form-urlencoded: 在发送前编码所有字符(默认) multipart/form-data: 不对字符编码

文件上传漏洞

眉间皱痕 提交于 2019-11-27 22:01:16
文件上传漏洞是web安全中经常利用到的一种漏洞形式。一些web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,再通过url去访问以执行代码。 0x01文件上传校验姿势 (1)客户端javascript校验(一般只校验后缀名) (2)服务端校验 文件头content-type字段校验(image/gif) 文件内容头校验(GIF89a) 后缀名黑名单校验 后缀名白名单校验 自定义正则校验 (3)WAF设备校验(根据不同的WAF产品而定 客户端校验 一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。 判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。 服务端校验 content-type字段校验 这里以PHP代码为例,模拟web服务器端的校验代码 12345678910111213141516 <?php if($_FILES['userfile']['type'] != "image/gif") #这里对上传的文件类型进行判断,如果不是image/gif类型便返回错误。 { echo "Sorry, we only allow uploading GIF images";

网络与信息安全领域专项赛(2019.08.15)Misc 赛后复现

泄露秘密 提交于 2019-11-27 15:47:31
I'm gamectf.com, I love TXT. dig命令 是常用的域名查询工具,可以用来测试域名系统工作是否正常 七代目 【CTF杂项】常见文件文件头文件尾格式总结及各类文件头 https://blog.csdn.net/xiangshangbashaonian/article/details/80156865 图片隐写查看神器stegsolve使用方法 https://blog.csdn.net/dyw_666666/article/details/88650738 Linux下WinHex的替代品 https://blog.csdn.net/abc_12366/article/details/87031834 UE修改文件头 亚萨西 7z解压,猜测解压密码loli 解压得到 winhex打开,是Ook编码, 解码网站 https://www.splitbrain.org/services/ook flag{f71d6bca-3210-4a31-9feb-1768a65a33db} 24word Deepin linux 15.9.1&& Ubuntu 16.04 安装zsteg、gem https://blog.csdn.net/valecalida/article/details/87359620 核心价值观编码解码 修改后缀为.zip

dicom入门资料整理

假装没事ソ 提交于 2019-11-27 15:10:10
刚刚学习医学影像,学习到了DICOM,搜集一些基础入门的资料分享给大家。 DICOM(Digitalimaging and Communications in Medicine)数字影像和通信标准 DICOM3 . 0 . 2004 在 2004 年 11 月发布。 DICOM 3 . 0 标准共有 18 个部分,其各部分的内容概要如下: 第一部分:引言与概述,简要介绍了 DICOM 的概念及其组成。 第二部分: DICOM 兼容性声明。声明 DICOM 要求制造商精确地描述其产品的 DICOM 兼容性,即构造一个该产品的 DICOM 兼容性声明。 第三部分: DICOM 信息对象定义。介绍了 lOD 和 SOP 类。 第四部分:服务类,说明了 14 个服务类,服务类详细介绍了功能与信息对象上的命令及其产生的结果。 第五部分:数据结构及语意,描述了怎样对信息对象类和服务类进行构造和编码。 第六部分:数据字典,描述了所有信息对象是由数据元素组成的,数据元素是对属性值的编码。 第七部分:消息交换,定义了进行消息交换时相互通讯的医学图像应用实体所用到的服务和协议。 第八部分:消息交换的网络通讯支持,说明了在网络环境下的通讯服务和支持 DICOM 应用实体进行消息交换的必要的上层协议。 第九部分:消息交换的点对点通讯支持。由于目前在实际中很少使用点对点通信,该部分在 DICOM 2003

java判断文件真实类型

岁酱吖の 提交于 2019-11-27 10:28:14
代码如下: import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; /** * <p> * 类描述:获取和判断文件头信息 * |--文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。 * |--头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation)。 * |--为了解决在用户上传文件的时候在服务器端判断文件类型的问题,故用获取文件头的方式,直接读取文件的前几个字节,来判断上传文件是否符合格式。 */ public class CheckFileFormatUtil { // 缓存文件头信息-文件头信息 private static final HashMap<String, String> mFileTypes = new HashMap<String, String>(); static { // images mFileTypes.put("FFD8FF", "jpg"); mFileTypes.put("89504E47", "png"); mFileTypes.put("47494638", "gif"); mFileTypes.put(