CTF实战:从入门到提升_苗春雨 主编;叶雷鹏 主编;赵今 副主编;杨鑫顺 副主编;金祥成 副主编_AZW3_MOBI_EPUB_PDF_电子书(无页码)_苗春雨 主编;叶雷鹏 主编;赵今 副主编;杨鑫顺 副主编;金祥成 副主编

内容节选

第7章隐写术 学习目标 1. 掌握和识别常见的文件结构类型。 2. 熟悉常见隐写术的构造原理。 3. 掌握常见隐写术的破解方法。 隐写术即通过一定的手段达到信息隐藏的目的,不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写的信息通常被嵌入在某些普通的文件中,如文档、图片等,对其使用一定的方法进行加密,使其包含被加密过的消息。 7.1 文件结构类型及识别 大部分文件都可以被分为文件头、文件体、文件尾三大部分。其中文件头主要包括产生或编辑文件的软件的信息及文件本身的参数,文件头格式错误将导致文件不可用。文件体是文件的主体部分,包含了文件的具体数据,对文件容量起决定性作用。文件尾为可选项,可以为一些其他信息。 在众多的文件类型中,大部分都有着自己固定的文件头和文件尾,可以通过查看文件头和文件尾来确定出文件的类型。 常见的一些文件类型的文件头和文件尾如表7-1所示。 表7-1 常见文件头和文件尾 一般我们会通过查看文件的扩展名来确定一个文件的类型,不过扩展名是可任意更改的,所以可能并不准确。我们最好能通过查看文件的文件头和文件尾来确定文件的类型。可以通过16进制编辑器来查看文件头和文件尾,如010Editor、Winhex等。 在Linux系统中可以使用file命令查看文件的类型,在Windows系统中可以通过使用TrIDNET工具进行查看。其中利用file命令识别文件类型效果如图7-1所示。利用TrIDNET工具识别文件类型效果如图7-2所示。 ▲图7-1 file命令的使用 ▲图7-2 TrIDNET工具的使用 7.2 图片隐写 图片隐写就是通过各种方式将关键信息隐藏于图片中,这是在CTF杂项中经常会遇到的题型,下面介绍几种较为常见的图片隐写方式。 7.2.1 附加字符串 直接附加字符串原理是利用工具将隐藏信息直接写入图片结束符之后,由于计算机中图片处理程序识别到图片结束符就不再继续向下识别,因此后面的信息就被隐藏起来,如图7-3所示。 图7-3 文件尾附加字符串 大多数情况下信息会被隐藏在末尾,这样不会对图片本身的显示产生影响。当然也不排除将隐藏的信息放在其他地方,这时我们可以通过搜索文本的方式来寻找。我们可以通过快捷键调出010editor的查找功能,一般情况下我们会去查找一些关键字,如flag、ctf、key等,如图7-4所示。 图7-4 查找关键字 另一种常见手段就是图种,这是一种采用特殊方式将图片文件(如JPG格式)与其他文件类型(如zip格式)结合起来的文件。该文件一般保存为图片格式,可以正常显示图片内容。我们可以通过修改文件的扩展名为其他文件类型,便可得到其中的数据,如图7-5所示。或者利用binwalk、foremost等类似的工具进行分离,如图7-6所示。 ▲图7-5 在图片尾部隐藏zip压缩包 ▲图7-6 借助binwalk工具分离图 还有一种常见手段是直接在图片的属性中添加,这种手段又叫作EXIF(Exchangeable image file format),即可交换图像文件格式,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。EXIF可以附加于JPEG、TIFF、RIFF等文件之中,通过鼠标右键单击图片打开菜单,单击“属性”并切换到详细信息标签下即可直接查看EXIF信息。这种方式比较局限,一般只有JPG格式的图片可以看到,如图7-7所示。在PNG或者BMP详细信息中的值无法手工修改,这种隐藏方式往往容易被选手忽略。 图7-7 JPG图片属性 7.2.2 图片宽高 对于一张图片,我们可以通过修改其宽高的方式来隐藏信息。但是修改宽度会导致图片变形,所以多数情况下是修改高度。比较常见的是PNG格式的图片。 PNG图片16进制中的各部分信息如表7-2所示,其中部分内容会因不同图片而变化,但位置是固定的。 表7-2 具体含义对照表 一般情况下我们只需将高度的值修改得尽量大些就可以看到隐藏的信息了,但有时需要我们恢复成原始的宽高,这时就需要用到PNG中的CRC校验码了。PNG图片IHDR部分的CRC校验码,是从IDCH到IHDR的17位字节进行CRC计算得到,即计算49484452000000730000004B0806000000的CRC值。那么如果修改了宽高而没有修改CRC的值,我们就可以通过枚举宽高的值进行CRC计算,如果与现在的CRC相同,则进行计算的宽高即为真实的宽高,示例Python脚本如下: 7.2.3 最低有效位(LSB) 图片中的像素一般是由三原色(红、绿、蓝)组成,三原色可以再组成其他各种颜色。在PNG图片中,每个颜色占有8bit,即256种颜色,那么就可以组合成16777216种颜色。比如RGB值为(0,255,0)的颜色为绿色,那么我们将其......

  1. 信息
  2. 网络空间安全技术丛书专家委员会名单
  3. 前言
  4. 第1篇 Web安全
  5. 第1章 Web安全基础知识
  6. 第2章 Web安全入门
  7. 第3章 常见Web漏洞解析
  8. 第2篇 Crypto密码
  9. 第4章 密码学概论
  10. 第5章 古典密码学
  11. 第6章 现代密码学
  12. 第3篇 MISC安全
  13. 第7章 隐写术
  14. 第8章 压缩包分析
  15. 第9章 流量分析
  16. 第10章 取证分析
  17. 第4篇 Reverse逆向工程
  18. 第11章 逆向分析基础
  19. 第12章 逆向分析法
  20. 第13章 代码对抗技术
  21. 第5篇 PWN
  22. 第14章 PWN基础知识
  23. 第15章 栈内存漏洞
  24. 第16章 堆内存漏洞
  25. 第17章 其他类型漏洞