美文网首页信息安全
那些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