Bugku杂项

怀疑人生

拿到一个名字为zip的文件,将其命名为1.zip,解压后得到了如下图所示的一个文件夹
这里插入图片描述
对于第一个ctf1.zip,尝试去解压,发现要用密码。没有找到相关的提示,考虑直接用爆破。得到密码为:password
在这里插入图片描述
解压后得到一串字符:

XHU2Nlx1NmNcdTYxXHU2N1x1N2JcdTY4XHU2MVx1NjNcdTZiXHU2NVx1NzI=

base64解码后为:

\u66\u6c\u61\u67\u7b\u68\u61\u63\u6b\u65\u72

这是一个unicode编码无疑了,再去解码:
在这里插入图片描述
得到了:flag{hacker 先放在这儿。
然后去看ctf2.jpg。用十六进制查看器去看图,发现了结束部分是一个zip文件。
ZIP的文件头为:50480304 尾是:504B
在这里插入图片描述
直接将图片改为.zip的压缩文件,解压后得到了下面的东西:
… … …! ?!!.? … … …? .?!.? …! .?.. … …
…!?! !.?.. … … …?.? !.?.. … … … … !.?.. …
… .!!! .!!! !!! ??? .?!.? !!! !!! !!! .?.. …! ?!!.?
!!! !?.?! .!!! !!! !!! .!!!. ?.. … … .!!! .?.. …
… .?.?! .?!.? .
这是Ook!编码,在线去解码(网址: https://www.splitbrain.org/services/ook)
在这里插入图片描述
得到了一个字符串,这是一个base58编码的,没有找到一个好用的在线解码,用python实现解码:

__b58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
__b58base = len(__b58chars)

def b58encode(v):
    """ encode v, which is a string of bytes, to base58.
    """

    long_value = int(v.encode("hex_codec"), 16)

    result = ''
    while long_value >= __b58base:
        div, mod = divmod(long_value, __b58base)
        result = __b58chars[mod] + result
        long_value = div
    result = __b58chars[long_value] + result

    # Bitcoin does a little leading-zero-compression:
    # leading 0-bytes in the input become leading-1s
    nPad = 0
    for c in v:
        if c == '\0':
            nPad += 1
        else:
            break

    return (__b58chars[0] * nPad) + result


def b58decode(v):
    """ decode v into a string of len bytes
    """

    long_value = 0L
    for (i, c) in enumerate(v[::-1]):
        long_value += __b58chars.find(c) * (__b58base ** i)

    result = ''
    while long_value >= 256:
        div, mod = divmod(long_value, 256)
        result = chr(mod) + result
        long_value = div
    result = chr(long_value) + result

    nPad = 0
    for c in v:
        if c == __b58chars[0]:
            nPad += 1
        else:
            break

    result = chr(0) * nPad + result
    return result

if __name__ == "__main__":
    print  b58decode("3oD54e")

解码结果为:misc
最后一张图片,看着像二维码,直接用工具去解码:
在这里插入图片描述
得到了12580}。得到flag{hackermisc12580}

红绿灯
拿到图片后发现是一个gif的动图。用StegSolve打开。Analyse ->Frame Browser。可以看到一共有1168帧。
在这里插入图片描述
观察前几帧发现大部分是红绿交替,每出现8次红绿就出现一次黄。前一个周期为 green red red green green green red red green. yellow。把green 看成0,red 看成1,yellow看成间隔。那么可以表示为 66h。代表ascii中的f。可以把所有变化的二进制写出来(当然会有些繁琐)。也可以写一个python脚本去跑出来。


from PIL import Image
 
savepath='D:\\gif\\'
im=Image.open('D:\\Traffic_Light.gif')
try:
  im.save(savepath+'light{0}.png'.format(im.tell()))
  while True:
    im.seek(im.tell()+1)
    im.save(savepath+'light{0}.png'.format(im.tell()))
except:
  pass
 
flag=""
for i in range(1168):
  image=Image.open(savepath+'light'+str(i)+'.png')

  if image.getpixel((115,55))==251:
    flag+=str(1)
  elif image.getpixel((115,145))==186:
    flag+=str(0)
flag= hex(int(flag,2))[2:-1].decode('hex')
print flag

结果如图:
在这里插入图片描述

flag{Pl34s3_p4y_4tt3nt10n_t0_tr4ff1c_s4f3ty_wh3n_y0u_4r3_0uts1d3}

细心的大象

下载文件,是一个叫1.jpg.zip的压缩文件。解压后得到了一张1.png的图片。右键,属性,查看一下详细信息,得到一串字符串。

TVNEUzQ1NkFTRDEyM3p6

在这里插入图片描述
应该是密码吧,先放在这里。去看一下图片1.jpg。用十六进制查看器去看一下图片的数据流。
在这里插入图片描述
可以看到在jpg文件尾部FF D9后面有一个rar文件头表示:52 61 72 21,应该是在图片中隐藏了一个压缩包。放到kali中分析一下
在这里插入图片描述
用foremost命令分离一下。得到了一个rar压缩包,打开要密码,输入一下上面得到的密码。密码错误!用base64解一下上面得到的字符串,再输入过去,正确!得到了一张png的图片,好像见过吧**
在这里插入图片描述
用十六进制工具打开,找到控制png图片的长度和高度字段(在字符IHDR后8个字节,前4个字节控制宽度,后4个字节控制高度。去修改后四个字节,修改宽度可能出错).
在这里插入图片描述
在这里插入图片描述
这儿将420改成500,保存后再看一下图片
在这里插入图片描述
得到flag.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值