CTF 杂项 隐写术 密码学及编码 取证技术

隐写术

隐写术( steganography ) : 将信息隐藏在其他载体中, 不让
计划的接收者之外的人获取到信息。

常见载体:图片、音频、视频、压缩包

图像隐写

图片:细微的颜色差别、GIF图多帧隐藏、Exif信息隐藏、图片修复

  1. LSB(Least Significant Bit)最低有效位

    • 像素三原色(RGB)
    • 通过修改像素中最低位的1bit来达到隐藏的效果
    • 工具: stegsolve
  2. 将信息隐藏在动态图中,一闪而过,肉眼难以看到

    • 工具: stegsolve、Namo GIF、Photoshop
  3. Exif ( ExchangeableImage File )信息隐藏

    • 照片的Exif属性中可以保存大量信息
  4. 图片修复:

    • 常见图片文件结构:

      • JPEG/JPG
        文件头标识(2 bytes) : FF D8
        一文件结束标识(2 bytes) : FF D9
      • PNG
        一文件头标识(8bytes):89 50 4E 47 0D 0A 1A 0A
      • GIF
        一文件头标识(6 bytes) : 47 49 46 38 39(37) 61
      • BMP
        文件头标识(2 bytes) : 42 4D
    • 图片被损坏,缺少某部分数据如文件头等,需要对图片进行修复

    • 工具: winhex

音频隐写

  • 信息隐藏在声音里(逆序)
  • 信息隐藏在数据里(分析音频数据)
  • 工具: MP3stego、Audition、 Matlab

视频隐写

  • 信息隐藏在视频的某个或多个帧里
  • 工具: Premiere、会声会影等

文件隐写

  • 文件拼接( copy /b 1.jpg+ 2.zip output.jpg )
  • 工具: binwalk、dd、winhex

密码学及编码

古典密码学

凯撒密码(Caeser)
$pip install pycipher #安装pip工具
$python
>>> from pycipher import Caesar
>>> Caesar(key=5).encipher("HEL LOCAESAR") 
>>> 'MJQQTHFJXFW'
>>> Caesar(key= 5).decipher("MJQQTHFJXFW")
>>> 'HELLOCAESAR'

ROT13(Rotate By 13 Places) :可以理解为一种特殊的凯撒密码。加密即解密,解密即加密。

栅栏密码
  • 栅栏密码( Rail Fence Cipher )把要加密的信息分成N组,依次取各组的第1,2.3…位。

明文: HELLOWORLD
分组: HELLO WORLD
密文: HWEOLRLLOD ( 2栏)

弗吉尼亚密码( Vigenere Cipher )

二维表单加密

明文: HELLOWORLD
密钥:GOOD
密文: NSZOUKCURR

现代密码学

对称加密算法

  • 特点:使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。即加密解密使用相同密钥。
  • 常见对称加密算法: DES、3DES、 AES等。在线工具
  • 使用在线工具进行加解密。

非对称加密算法

  • 特点:加密和解密使用不同的密钥。公开密钥( Public Key )与私有密钥( Private Key )是一-对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
  • 常见非对称加密算法: RSA、Elgamal、 背包算法、Rabin、 D-H、ECC

CTF中的密码

image-20210805221045783

编码和摘要

  • 加密(encipher/decipher) :加密传输信息,保证信息的安全性通过密钥和密文可以还原原始信息。
  • 编码(encode/decode) :将数据转化成某种固定的格式的编码信息,方便不同系统间的传输,通过解码编码信息可以得到原始信息。
  • 散列(hash) :也叫摘要或哈希,验证信息的完整性,不能通过哈希值还原原始信息。

编码

常见的编码: ASCII、 Base64、 UR编码、HTML 编码、Unicode、UTF-8、 摩斯电码、二维码

  • Base64编码

Base64编码要求把3个8位字节( 3*8=24 )转化为4个6位的字节( 4*6=24 ) ,之后在6位的前面补两个0 ,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’

  • URL编码

为了解决URL中键值对规则的问题。http://xxx.com/?x=123&y= 456#test
将符号用ascii码的十六进制表示,并在数字前添加"%’,如”<"的ascii码是60 ,转为十六进制是3C , URLencode后是%3C。

  • JOTHER

匿名函数的原生形式,由[、]、(、)、{、}、+、!组成,可在浏览器的console直接还原

  • JSFUCK

使用6个字符[、]、 (、)、!、+来编写JavaScript程序,可在浏览器的console直接还原

  • 摩尔斯电码

摩尔斯电码(摩斯密码, Morse code ):用点、划、点和划之,间的停顿来表示字母和数字。

  • 二维码

二维码( QR Code ) : 用某种特定的几何图形按定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息。

摘要

  • MD5 ( Message Digest Algorithm 5 ) 特点:

    • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
    • 容易计算:从原数据计算出MD5值很容易。
    • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节, 所得到的MD5值都有很大区别。
    • 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数
      据(即伪造数据)是非常困难的。
  • SHA1 ( Secure Hash Algorithm ) :

主要适用于数字签名标准( Digital Signature Standard,DSS )里面定义的数字签名算法( Digital Signature Algorithm,DSA)。

隐写术、密码编码工具

隐写术常用工具:
Stegsolve.jar
010Editor / WinHex
Photoshop
Audition

密码编码工具:

在线加解密工具
Python脚本
CTF解密框架
(https://github.com/0Chencc/CTFCrackTools/releases)
Burpsuite的Decoder模块
(https://portswigger.net/burp/communitydownload/)

CTF取证技术

流量分析

Wireshark的基本使用方法:

  • 筛选器的使用、追踪流、文件的导出
    • Wireshark筛选器
      协议筛选: http、ftp等
      IP地址筛选:ip.addr == 192.168.1.1

电子取证

日志分析:同过日志分析寻找隐藏在其中的信息。

SQL注入点的查找
WEBSHELL的查找
用户访问敏感路径的查找

posted @ 2021-08-05 23:00  SKPrimin  阅读(484)  评论(0编辑  收藏  举报