文件头

四道图片隐写题

血红的双手。 提交于 2019-12-06 11:09:01
第一题 打开压缩包得到的是一张PNG格式的图片 首先拖放到010Editor中: CTRL+F 搜索IHDR发现只有一个,没有其他问题 然后放到KALI中分析一波: 图片能够在kali中打开,说明不是宽高的隐写,因为如果修改了宽高在linux中是无法正常显示的 然后binwalk分析一波: 同样的没有什么问题 最后就是放到 stegslove里面试一试了 简单的科普一下png的知识 png支持RGBA四个通道,每个通道占8个二进制位,隐写文件或数据一般都在各个通道的低位,因为低位的变化不会引起较大的视觉变化,图片看上去还是原来的图片,但是你不知道是在哪个通道,这里有4个通道,如果藏在一个通道的低位的话,有四种可能,如果藏在两个通道的低位的话,可能进行各种运算操作后出现新的图片,加减乘除与或异或 发现Red plane 0是空的,按理来说应该也是”雪花“的,所以应该是有问题的 然后 Analyse - Data Extract,查看该通道,得知是LSB隐写 后面得知就是吧Alpha、Red、Green、Blue 0通道进行异或处理就能够得到flag了,可以通过stegslove获得,下面说一下通过python编写脚本进行色道分离异或处理的方法: #代码参考自合天智汇 import cv2 import numpy as np import os def lowbit(x):

ctf misc 学习总结大合集

一个人想着一个人 提交于 2019-12-04 13:41:18
0x00 ext3 linux挂载光盘,可用7zip解压或者notepad搜flag,base64解码 放到kali 挂载 到/mnt/目录 mount 630a886233764ec2a63f305f318c8baa /mnt/ cd /mnt/ ls 寻找 find | grep 'flag' 或 find -name 'flag*' 查看 cat ./O7avZhikgKgbF/flag.txt eg:查找key.txt这些文件里是否存在 grep -r ‘key.txt’ 显示在1文件,看 文件类型 root@kali:/mnt# file 1 1: gzip compressed data, was "key.txt", last modified: Wed Oct 1 06:00:52 2014, from Unix, original size 30. 解压并显示gzip下的文本内容 root@kali:/mnt# gunzip < 1 SECCON{@]NL7n+-s75FrET]vU=7Z} war文件 unzip -c dw.war 0x01 pdf pdfinfo fa4bcaa5554447cea4c69c9b75a43283.pdf ( pdf属性 ,也可直接Adobe Reader查看) pdftotext

逆向-PE头解析

与世无争的帅哥 提交于 2019-12-04 11:35:49
目录 PE头解析 数据结构 IMAGE_DOS_HEADER IMAGE_NT_HEADERS 区块 PE头解析 PE 格式是Windows系统下组织可执行文件的格式。PE文件由文件头和对应的数据组成。目标是在不同的架构下装载器和编程工具不用重写。 PE中一大特点是不连续的位置大部分记录的都是相对地址(RVA),相对的是PE文件中记录的基地址(image base)的偏移量。进程是程序的执行状态的实体,每个进程都有自己独立的内存空间(编址)PE和内核等一起编制,所以image base也不总是确定的。 结构(参考:加密与解密) 数据结构 IMAGE_DOS_HEADER 参考:参考: http://www.openrce.org/reference_library/files/reference/PE%20Format.pdf IMAGE_DOS_HEADER STRUCT { +0h WORD e_magic //Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记 +2h WORD e_cblp //Bytes on last page of file +4h WORD e_cp //Pages in file +6h WORD e_crlc //Relocations +8h WORD e_cparhdr //Size of header in

【杂项】各类文件头结合winhex使用-转载

左心房为你撑大大i 提交于 2019-12-04 09:22:48
———常用文件头 ——— JPEG (jpg),文件头:FFD8FFE1 PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 ZIP Archive (zip),文件头:504B0304 RAR Archive (rar),文件头:52617221 XML (xml),文件头:3C3F786D6C MPEG (mpg),文件头:000001BA MPEG (mpg),文件头:000001B3 AVI (avi),文件头:41564920 ——— 不常用 ——— TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),文件头:38425053 Rich Text Format (rtf),文件头:7B5C727466 HTML (html),文件头:68746D6C3E Email [thorough only] (eml),文件头:44656C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444E MS Word/Excel (xls.or.doc),文件头:D0CF11E0

Bugku流量分析题目总结

六月ゝ 毕业季﹏ 提交于 2019-12-04 07:08:59
0x01 flag被盗 题目链接: https://ctf.bugku.com/files/e0b57d15b3f8e6190e72987177da1ffd/key.pcapng 解题思路: 这个题目是比较基本的流量分析题,拿到数据包后,查看几个数据比较大的可疑数据,追踪TCP流即可拿到flag flag:flag{This_is_a_f10g} 0x02 中国菜刀 题目链接: https://ctf.bugku.com/files/047cefd48389dfc5bdc055d348bbf520/caidao.zip 解题思路: 拿到数据包后,追踪一下TCP流,发现了一个flag.tar.gz的压缩文件。 把数据包放进kali里面用binwalk分析一下,发现确实存在这个压缩文件。然后使用binwalk将压缩包分离。 然后解压压缩包,解压后发现一个flag.txt的文件,打开就可以拿到flag flag:key{8769fe393f2b998fa6a11afe2bfcd65e} 0x03 这么多数据包 题目链接: https://ctf.bugku.com/files/425d97c3a1a2fa32dcead0ddd90467c0/CTF.pcapng.zip 解题思路: 根据提示是先找到getshell的流 ,那么不难联想到,在getshell后会执行一些命令

11.11文件上传绕过

ぃ、小莉子 提交于 2019-12-04 05:51:43
绕过 前端绕过 (1) 修改前端的 JS ,添加白名单 (2) 浏览器禁用 JS (3) 破坏 JS 代码,修改引用的地方 (4) 修改 webshell 后缀名, shell.php-->shell.png ,拦截数据包,修改后放行 后端绕过 (1)后缀名检测绕过 大小绕过 找不在黑名单内的文件后缀名,需要服务器能够解析 php2 利用 windows 系统特性,以空格和 . 结尾的文件 利用 NTFS 数据流绕过 这里生成的文件内容没有截全,都为 <?php phphinfo();?> (2)MIME 验证绕过 截取数据包修改请求头中 content-type 为常见的图片类型 (3)文件内容检测绕过(文件头检测) 服务器验证单签文件的文件头(魔数头),如果被拦截,可以添加容许上传文件的文件头。 拦截数据包,在恶意代码前面直接添加文件头 制作图片马,上传拦截数据包修改后缀名 copy 1.png/b+ shell.php/a shell.png edjpgcom 一句话木马程序辅助生成图片马 Linux 中: echo “<?php@eval($_POST[‘pass’])?>” >> a.jpg 没有文件头 ( >> 表示在后面追加,这里不能用 > ) 截断上传 文件加载检测 一般是调用的 API 或函数去进行文件加载检测,常见的是图像渲染测试 一般两种攻击方式:渲染测试绕过

PyCharm的几个使用技巧

孤街醉人 提交于 2019-12-04 01:57:32
  PyCharm是个十分强大的Python编辑器,笔者在日常的工作中学到了很多该IDE的使用技巧,有的是从别人那里学到的,有的是自己学习的。笔者深感自己的开发能力不足,因此希望能够将这些使用技巧记录下来,同时也把这些使用技巧分享给读者,希望能对读者有所帮助。   以下将介绍几个简单的PyCharm使用技巧。以Mac系统中的PyCharm使用为例。 自定义文件头   在实际的代码编写中,我们需要定义属于自己的文件头,比如脚本的创建时间、作者、编码等。在PyCharm中,我们可以一键定义,并与之后的脚本都会遵循该文件头的模式。   按如下操作进入自定义文件头设置模式:File --> Preferences(Windows系统为:Settings) --> Editor --> File and Code Template --> Python Script,这样我们就可以设置Python脚本的文件头了。   在设置的面板中,输入以下模板: # -*- coding: utf-8 -*- # author: Jclian91 # place: Pudong Shanghai # time: ${time} import os, re, json, traceback if __name__ == '__main__': pass   接着,我们创建示例脚本a.py,脚本的截图如下:

WAV文件读取

≯℡__Kan透↙ 提交于 2019-12-03 15:54:08
WAV是一种以RIFF为基础的无压缩音频编码格式,该格式以Header、Format Chunk及Data Chunk三部分构成。 本文简要解析了各部分的构成要素,概述了如何使用C++对文件头进行解析以及提取音频数据。 上图展示了WAV文件格式,包括每一field的大小与端序 Header ChunkID: 4字节大端序。文件从此处开始,对于WAV或AVI文件,其值总为“RIFF”。 ChunkSize: 4字节小端序。表示文件总字节数减8,减去的8字节表示ChunkID与ChunkSize本身所占字节数。 Format: 4字节大端序。对于WAV文件,其值总为“WAVE” Format Chunk Subchunk1ID: 4字节大端序。其值总为“fmt ”,表示Format Chunk从此处开始。 Subchunk1Size: 4字节小端序。表示Format Chunk的总字节数减8。 AudioFormat: 2字节小端序。对于WAV文件,其值总为1。 NumChannels: 2字节小端序。表示总声道个数。 SampleRate: 4字节小端序。表示在每个通道上每秒包含多少帧。 ByteRate: 4字节小端序。大小等于SampleRate * BlockAlign,表示每秒共包含多少字节。 BlockAlign: 2字节小端序。大小等于NumChannels *

BUUCTF--checkin

孤街浪徒 提交于 2019-12-03 09:32:05
文件上传 文件上传一般验证方式: 1.本地js验证(客户端) 2.MIME验证(服务端) 3.拓展名验证(服务端) 4.脚本内容(文件头)验证(服务端) 通常会用到exif_imagetype()函数,这个函数会读取图片头并返回一个数组 绕过方法: 1.本地js验证 方法很多,直接f12删除限制的代码再提交表单 2.mime验证 抓包修改content-type的内容就行了 一般这个验证对应得验证代码如下 $_FILES['upfile']['type'] == 'image/gif' //png、jpg..... 3.拓展名验证 多找一些,尝试找到有没有服务器漏掉得,比如php5,php7 大小写看能否能绕过 0x00绕过 4.文件头验证 修改文件头 JPG :FF D8 FF E0 00 10 4A 46 49 46 //参考文章https://blog.csdn.net/weixin_44077544/article/details/102688564 PNG: 89 50 4E 47 //参考文章https://blog.csdn.net/weixin_44077544/article/details/102688564 GIF(相当于文本的GIF89a):47 49 46 38 39 61 //参考文章https://blog.csdn.net/weixin

X86-64和ARM64用户栈的结构

匿名 (未验证) 提交于 2019-12-03 00:40:02
背景 ????主要基于Linux,介绍X86-64和ARM64的用户栈结构。断断续续的学了很多和栈相关的知识,今天打算整理用户栈相关的知识,废话少说,下面进入正题。在最初的最初,用户栈是OS创建的。 进程的创建 ????一个用户进程从无到开始运行,需要经过几个重要的步骤: Linux首先创建一个task_struct用于管理进程的方方面面。 建立进程的虚拟地址空间,也即建立页表,建立虚拟地址到物理地址的映射,到这时一个用户进程所需的基本元素已经具备,到这里frok()的任务基本完成。 接下来就需要可执行文件本身的参与,读取可执行文件头,解析文件头,文件头的前几个字节会指出当前文件是何种类型,如果是#!/bin/sh或 #!/bin/python 则该文件是脚本文件,有负责脚本文件的加载程序,本文只关注可执行文件。建立虚拟地址和可执行文件之间的映射。 初始化进程环境, 其中比较重要的一项便是初始化用户进程栈 跳转到可执行文件的入口,执行可执行文件,一个用户进程就开始运行起来了 用户进程栈的初始化 在进程刚开始运行的时候,需要知道运行的环境和用户传递给进程的参数。一般来说,Linux会在用户进程运行前,将系统的环境变量和用户给的参数保存到用户虚拟地址空间的栈中。 原文:http://blog.51cto.com/iamokay/2138525