美文网首页信息安全
那些CTF中的ZIP问题

那些CTF中的ZIP问题

作者: 疯帮主 | 来源:发表于2018-05-17 22:23 被阅读0次

1.消息隐藏

image.png

写入zip文件,转码有点恶心


image.png

2.伪加密

自己写了个脚本查伪加密

# coding='utf-8'
"""
判断文件是否是伪加密
有两个加密表示位:
第一个:文件[6:8]
第二个:文件目录区,504B0102开头,再也8,9位
第一个:第二个:是否加密
0000:0000:没有加密
0000:0900:伪加密
0900:0900:真加密
0900:0000:没有加密
使用方法:python3 is_pe filename.zip
"""
import sys
import os

def is_pe(file):
    flag_pe_top = b'PK\x01\x02'
    flag_te = b'\t\x00'
    flag_ne = b'\x00\x00'

    with open(file, 'rb') as f:
        text = f.read()
        
    flag_index = text.find(flag_pe_top)
    if  text[6:8] == flag_ne and text[flag_index+8:flag_index+10] == flag_te:
        return 1
    elif text[6:8] == flag_te and text[flag_index+8:flag_index+10] == flag_te:
        return 0
    elif text[6:8] == flag_ne and text[flag_index+8:flag_index+10] == flag_ne:
        return -1
    elif text[6:8] == flag_te and text[flag_index+8:flag_index+10] == flag_ne:
        return -1
    else:
        return -2


def main():
    if len(sys.argv) != 1:
        for arg in sys.argv[1:]:
            flag = is_pe(arg)
            if flag == 1:
                print("[+] %s 是伪加密!"%arg)
            elif flag == 0:
                print("[*] %s 是真加密"%arg)
            elif flag == -1:
                print("[#] %s 文件无加密"%arg)
            else:
                print("[-] %s 文件损坏"%arg)
    else:
        print('help: python3 is_pe file1 file2 file3')


if __name__ == '__main__':
    main()
image.png

3.图片隐藏压缩包

第一步:分析

root@kali:~/桌面# ls
u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png
root@kali:~/桌面# binwalk u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png //分析图片

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 370 x 370, 1-bit grayscale, non-interlaced
41            0x29            Zlib compressed data, default compression
694           0x2B6           Zip archive data, encrypted at least v2.0 to extract, compressed size: 54990, uncompressed size: 292875, name: C8-E7-D8-E8-E5-88_handshake.cap
56130         0xDB42          End of Zip archive
//有两个文件,一个图片一个zip

第二步:使用dd分离

//使用dd分离dd if=文件名 of=分离文件名, skip=开始分离地址,bs=一次读写字节数
root@kali:~/桌面# dd if=u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png of=u.zip skip=694 bs=1
记录了55458+0 的读入
记录了55458+0 的写出
55458 bytes (55 kB, 54 KiB) copied, 0.122583 s, 452 kB/s
root@kali:~/桌面# ls
u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png  u.zip

第二步:使用foremost分离

root@kali:~/桌面# ls
u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png
root@kali:~/桌面# foremost u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png 
Processing: u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png
|foundat=C8-E7-D8-E8-E5-88_handshake.capc���-Bp��9�<`=HBQwჇ.���SDlPeE�he�����%��0`K��J��BQ�
�4
�+���W��OP?�;�߿w    ��r�4�������K�A�4�œ ���P2�X�����銃�0����G�޿��L��[�L���u|�^9e���*S��tCw/�n�;�}J��)t������=d�W������l������p��6Bc�4�(�'�W�����l �:%��@/,Ѷ���(v�g�e��F8�h�k�GAh��Vm���\�m������`��� 4
*|
root@kali:~/桌面# tree
.
├── output
│   ├── audit.txt
│   ├── png
│   │   └── 00000000.png
│   └── zip
│       └── 00000001.zip
└── u5bc6u7801u7eafu6570u5b57u5171u0038u4f4d.png

3 directories, 4 files

4.ADPR: 爆破/字典/掩码/明文攻击

爆破(不推荐)

image.png

字典

image.png

掩码

image.png

明文攻击,文件不能太小,要能看到每个文件都有crc32效验码

image.png

相关文章

网友评论

    本文标题:那些CTF中的ZIP问题

    本文链接:https://www.haomeiwen.com/subject/rcaudftx.html