Fork me on GitHub

CTFHub题解-历年真题-Misc-BJDCTF-2020【just a rar 、你猜我是个啥、一叶障目】

CTFHub题解-历年真题-Misc篇
 
BJDCTF-2020-Misc
 
 

(一)just a rar

 
 
 
1.知识点
 
用到的工具:Winhex、RAR密码爆破软件
 
 winhex下载链接:https://github.com/0yst3r/-CTF_Tools-/blob/master/16进制编辑器/winhex19.8.zip 
 
  RAR密码爆破软件下载链接:https://github.com/0yst3r/-CTF_Tools-/tree/master/Crypto/Rar%20Password%20Unlocker%20v3.2.0.1 
 
2.题解 
 
下载下来是一个rar压缩包,打开发现有密码~
 
笔者用的Rar密码破解是  RAR Password Unlocker 这一款软件~
(下了好几个版本的都不太好用,这个版本还可以)
 
rar的名字是四位数,那么密码应该也是四位数啦,直接在暴力破解那里限定长度和字符集,这样爆破时间会更快哒~
 
 
爆破出来啦~
密码是 2016 
 
 
打开是一个照片,用winhex看看,发现flag
 
 
 flag{Wadf_123} 
 
 
 

(二)你猜我是个啥

 
 
 
1.知识点
 
用到的工具:Winhex
 
 winhex下载链接:https://github.com/0yst3r/-CTF_Tools-/blob/master/16进制编辑器/winhex19.8.zip 
 
 
2.题解 
 
下载下来附件,发现打不开,emmmm.....
 
 
先放到 Winhex 里面看看啦!
 
 
最下面就看到flag咯~
 
 flag{i_am_fl@g} 
 
 
 
 
 
 

(三)一叶障目

 
 
 
1.知识点:png的CRC检验错误、010editor、tewakpng
 
 
 010editor的下载链接: https://github.com/0yst3r/-CTF_Tools-/blob/master/16进制编辑器/010_Editor_v8.0.1_(64-bit).zip 
 
 Tweakpng的下载链接: https://github.com/0yst3r/-CTF_Tools-/blob/master/Misc/tewakpng.zip  
 
这道题在windows下打开是正常的,但是在Linux系统下无法打开。
 
2.题解:
 
Windows下打开: 
 
 
 
试试在Linux系统下打开呢~
 
 
报了CRC的错误,查阅了资料,原来是png的CRC校验错误。
 
笔者也参考了很多wp,主要分为两种,一种是脚本解决,一种是工具解决。
 
下面代码是摘自一位大佬关于png修复CRC错误的脚本~
 
import zlib
import struct
#读文件
file = '1.png'  #注意,1.png图片要和脚本在同一个文件夹下哦~
fr = open(file,'rb').read()
data = bytearray(fr[12:29])
crc32key = eval(str(fr[29:33]).replace('\\x','').replace("b'",'0x').replace("'",''))
#crc32key = 0xCBD6DF8A #补上0x,copy hex value
#data = bytearray(b'\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xF1\x08\x06\x00\x00\x00')  #hex下copy grep hex
n = 4095 #理论上0xffffffff,但考虑到屏幕实际,0x0fff就差不多了
for w in range(n):#高和宽一起爆破
    width = bytearray(struct.pack('>i', w))#q为8字节,i为4字节,h为2字节
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
            #print(data)
        crc32result = zlib.crc32(data)
        if crc32result == crc32key:
            print(width,height)
            #写文件
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            fw = open(file+'.png','wb')#保存副本
            fw.write(newpic)
            fw.close

 

 
 
工具法: 
 
把图片放进 tewakpng 这个小软件里,会弹出一个警告,应该是CRC校验 IHDR chunk 不正确~
 
 
双击打开 IHDR chunk ~
 
 
 
width只有331,我们试着改到900
 
 
emmm.....再试试改一下高度~
 
Height只有332,我们试着改到900
 
 
 
 
 ps: 笔者没太明白,c20f1fc6和55900eef分别是什么意思,不知道是不是纸原始图片的IHDR chunk值,但是好像没法直接修改IHDR chunk的值,希望有大佬指点一下~ 
 
 
除了用到这个工具之外,我们还可以用强大的 010editor ~
 
 Templates 模块检测一下,我们看到黄色的警告:
 
 
 
 
 
 
 
也可以得到flag~
 
 xaflag{66666} 
 
 
 
 
 
需要用到的工具,我都放在github里啦,有需要的小伙伴自取~
在工具使用过程中有什么问题,欢迎在博客园私信我~ 
 
 
参考资料:
 
https://blog.csdn.net/qq_41173457/article/details/104351660
https://blog.csdn.net/weixin_30361753/article/details/96095393
 
 
 
posted @ 2020-04-16 15:24  0yst3r  阅读(1867)  评论(0编辑  收藏  举报
返回顶部