文件头


文件上传漏洞(绕过姿势)

旧街凉风 提交于 2019-12-22 01:28:01
  文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接。但是想真正把这个漏洞利用好却不那么容易,其中有很多技巧,也有很多需要掌握的知识。俗话说,知己知彼方能百战不殆,因此想要研究怎么防护漏洞,就要了解怎么去利用。此篇文章主要分三部分:总结一些常见的上传文件校验方式,以及绕过校验的各种姿势,最后对此漏洞提几点防护建议。(根据个人经验总结,欢迎补充纠错~~) 文件上传校验姿势 客户端javascript校验(一般只校验后缀名) 服务端校验 文件头content-type字段校验(image/gif) 文件内容头校验(GIF89a) 后缀名黑名单校验 后缀名白名单校验 自定义正则校验 WAF设备校验(根据不同的WAF产品而定) 1.客户端校验   一般都是在网页上写一段javascript脚本,校验上传文件的后缀名,有白名单形式也有黑名单形式。   判断方式:在浏览加载文件,但还未点击上传按钮时便弹出对话框,内容如:只允许上传.jpg/.jpeg/.png后缀名的文件,而此时并没有发送数据包。 2.服务端校验 2.1 content-type字段校验   这里以PHP代码为例,模拟web服务器端的校验代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php if( $_FILES[ 'userfile'][ 'type']

初学PHP读取CSV文件

和自甴很熟 提交于 2019-12-22 00:50:49
php中有针对csv函数:fgetcsv array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] ) handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。 length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。 delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。 enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。 fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。 首先使用fopen(file_url_name,mode) mode中有: 'r' 只读方式打开,将文件指针指向文件头。 'r+' 读写方式打开,将文件指针指向文件头。 'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'w+'

oracle之检查点(Checkpoint)

不羁的心 提交于 2019-12-20 02:16:57
检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。 检查点分为三类: 1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。 触发命令: svmrgrl>alter system checkpoint local; 这条命令显示的触发一个局部检查点。 2)全局检查点:所有实例(对应并行数据服务器)执行数据库所有所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。 触发命令 svrmgrl>alter system checkpoint global; 这条命令显示的触发一个全局检查点。 3)文件检查点:所有实例需要执行数据文件集的一个检查点操作,如使用热备份命令alter tablespace USERS begin backup,或表空间脱机命令alter tablespace USERS offline,将执行属于USERS表空间的所有数据文件的一个检查点操作。 检查点处理步骤: 1)获取实例状态队列:实例状态队列是在实例状态转变时获得,ORACLE获得此队列以保证检查点执行期间,数据库处于打开状态; 2)获取当前检查点信息:获取检查点记录信息的结构,此结构包括当前检查点时间、活动线程、进行检查点处理的当前线程、日志文件中恢复截止点的地址信息; 3)缓存区标识:标识所有脏缓存区

各种文件格式

浪尽此生 提交于 2019-12-18 04:58:17
这里写自定义目录标题 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中、居左、居右 SmartyPants 创建一个自定义列表 如何创建一个注脚 注释也是必不可少的 KaTeX数学公式 新的甘特图功能,丰富你的文章 UML 图表 FLowchart流程图 导出与导入 导出 导入 #这些头文件参考 一 JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),文件头:38425053 Rich Text Format (rtf),文件头:7B5C727466 XML (xml),文件头:3C3F786D6C HTML (html),文件头:68746D6C3E Email [thorough only] (eml),文件头:44656C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444E MS Word/Excel (xls.or.doc),文件头

Mysql数据结构

房东的猫 提交于 2019-12-17 10:31:35
文章目录 数据页 数据库中的存储结构 数据页的结构 从数据页结构的角度看B+树 结构-决定特性 磁盘IO 数据库缓冲池 缓冲池的一些命令查看 数据页加载的三种方式 结构-决定特性 数据页 数据库中的存储结构 记录是按照行来存储的,但是数据库的读取并不以行为单位,在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(Page)。 一个页中可以存储多个行记录(Row),同时在数据库中,还存在着区(Extent)、段(Segment)和表空间(Tablespace)。行、页、区、段、表空间的关系如下图所示: 页(Page) :用来存储数据表达形式行的空间,一页可以存在多个行,每一种数据库或数据引擎对于页的大小定义是不一样的,Sql Server的页大小为8K,、Oralce 支持的块大小为 2KB,4KB,8KB,16KB,32KB 和 64KB、InnoDB为16K。 区(Extent) :是比页大一级的我存储结构,在InnoDB引擎中,一个区会分配64个连续的页,不同的引擎上的页默认大小不一致,在InnoDB默认大小为16KB,一个区的大小也就是1M 段(Segment) :是由一个区或多个区组成,段并不需要区是连续的,段是数据库的分配单位,创建表的时候会创建一个表段,创建一个索引的时候会创建一个索引段。 表空间

java根据文件头判断文件类型

会有一股神秘感。 提交于 2019-12-15 14:21:29
java根据文件头判断文件类型 package com.mytest; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class VerifyFileType { public final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>(); private static FileInputStream is; static { getAllFileType(); // 初始化文件类型信息 } /** * 常用文件格式 */ private static void getAllFileType() { FILE_TYPE_MAP.put("ffd8ffe000104a464946", "jpg"); // JPEG (jpg) FILE_TYPE_MAP.put("89504e470d0a1a0a0000", "png"); // PNG (png) FILE_TYPE_MAP

PHP如何判断远程图片文件是否存在

 ̄綄美尐妖づ 提交于 2019-12-14 12:13:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> fopen()方法 最简单的方法就是用fopen(),看看文件能否打开,能打就文件当然就存在。 01 <?php 02 $url = ' http://www.nowamagic.net/images/test.jpg ' ; 03 04 if ( @ fopen ( $url , 'r' ) ) 05 { 06 echo 'File Exits' ; 07 } 08 else 09 { 10 echo 'File Do Not Exits' ; 11 } 12 ?> fopen() 函数打开文件或者 URL。如果打开失败,函数会返回 FALSE。 语法:fopen(filename,mode,include_path,context) 参数 描述 filename 必需。规定要打开的文件或 URL。 mode 必需。规定要求到该文件/流的访问类型。可能的值见下表。 include_path 可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。 context 可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。 mode 参数的可能的值: mode 说明 "r" 只读方式打开,将文件指针指向文件头。 "r+" 读写方式打开,将文件指针指向文件头

WAV文件头信息

狂风中的少年 提交于 2019-12-10 05:27:07
wav文件的文件头 wave文件的格式: 00H 4 char "RIFF"标志 04H 4 long int 文件长度 08H 4 char "WAVE"标志 0CH 4 char "fmt"标志 10H 4   过渡字节(不定) 14H 2 int 格式类别(10H为PCM形式的声音数据) 16H 2 int 通道数,单声道为1,双声道为2 18H 2 int 采样率(每秒样本数),表示每个通道的播放速度, 1CH 4 long int 波形音频数据传送速率,其值为通道数×每秒数据位数×每样 本的数据位数/8。播放软件利用此值可以估计缓冲区的大小。 20H 2 int 数据块的调整数(按字节算的),其值为通道数×每样本的数据位 值/8。播放软件需要一次处理多个该值大小的字节数据,以便将其 值用于缓冲区的调整。 22H 2   每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多 个声道,对每个声道而言,样本大小都一样。 24H 4 char 数据标记符"data" 28H 4 long int 语音数据的长度 文件头长度加起来是42字节,但是实际长度是44个字节(用UltraEdit打开一个WAVE文件,数一下就知道了)。如果用以个结构体来定义WAVE文件头应该为: struct WAVEFILEHEADER { char chRIFF[4]; DWORD

XCode编译报pngcrush caught libpng error错误但不影响运行

£可爱£侵袭症+ 提交于 2019-12-09 10:16:13
一直以来,我的Xcode项目编译偶尔会出现类似于While reading xx/BackgroundHomeScreen_5.png pngcrush caught libpng error的错误提示(不是警告),但是这个错误并不会影响应用运行,所以也就没管,今天正好有空解决这个问题。 根据网上搜到的资料,说出问题的png文件不是真正的png文件,可能是个jpg文件,实际的文件头信息是不一样的,造成不能识别。 然后我搜了一下Mac里检测图片真正格式的途径,找到了用文件头来检测图片格式的方法: JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件结束标识 (2 bytes): $ff, $d9 (EOI) TGA - 未压缩的前5字节 00 00 02 00 00 - RLE压缩的前5字节 00 00 10 00 00 PNG - 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A GIF - 文件头标识 (6 bytes) 47 49 46 38 39(37) 61 G I F 8 9 (7) a BMP - 文件头标识 (2 bytes) 42 4D B M PCX - 文件头标识 (1 bytes) 0A TIFF - 文件头标识 (2 bytes) 4D 4D 或 49 49

python解析本地HTML文件

久未见 提交于 2019-12-08 03:24:33
  Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可。现在我来分享一下爬取资料的调试过程。 一、将网页源代码存在本地   1、打开需要爬取的网页,鼠标右键查看源代码      2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html      二、在Python中打开本地html文件   打开并读取本地文件可使用BeautifulSoup方法直接打开 soup=BeautifulSoup(open('ss.html',encoding='utf-8'),features='html.parser') #features值可为lxml   解析后可以直接使用soup,与请求网页解析后的使用方法一致 三、使用本地文件爬取资料   1、先爬取主页的列表资料,其中同义内容使用“@”符号连接 def draw_base_list(doc): lilist=soup.find('div',{'class':'babynames-term-articles'}).findAll('article'); #爬取一级参数 for x in lilist: str1='' count=0 a='@' EnName=x.find('a').text; Mean=x

工具导航Map