PCTF-BrokenPic

下载下来是一个bmp文件,但是却打不开,010editor打开看十六进制,推测是少了文件头,百度bmp文件头,找到文件头:424D,于是加进去,但是文件仍然打不开,到这里不知道该怎么办。看了别人的WP才知道文件头不止前面2个,于是用ps新建一个1366*768大小的bmp图片

image.png

将它加到题目文件开头,打开发现有东西

image.png

发现二维码扫不了 但是有个key,结合十六进制是16个字节规律变化的,所以是AES的ECB加密
那么网上找个AES解密脚本改改就行了

# -*- coding: utf-8 -*-
from Crypto.Cipher import AES
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
key ='PHRACK-BROKENPIC'
cipher = AES.new(key)
f = open('brokenpic.bmp','rb')
data = f.read()
# print data
decrypted = cipher.decrypt(data)
bmp_head_bin="424D3B0C300000000000360000002800000056050000000300000100180000000000020c3000120B0000120B0000000000000000000000000000000000000000"
i=0
bmp_head=""
while(i<len(bmp_head_bin)):
    print bmp_head_bin[i:i+2].decode('hex')
    bmp_head+=bmp_head_bin[i:i+2].decode('hex')
    i+=2
print bmp_head
f1 = open('123.bmp','w')
#print decrypted
f1.write(bmp_head)
f1.write(decrypted)
f1.close()
image.png

扫描得到flag

参考资料:
http://likang.me/blog/2013/06/05/python-pycrypto-aes-ecb-pkcs-5/
http://www.bystudent.com/?p=234

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HBCTF第三场WP https://blog.ctftools.com/2017/05/post155 发表于2...
    用电热毯烤猪阅读 1,558评论 0 49
  • 1、不安全的随机数生成,在CSRF TOKEN生成、password reset token生成等,会造成toke...
    nightmare丿阅读 3,797评论 0 1
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,644评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,115评论 2 58
  • 饮食与心情好坏以及心理作用关系很大,同一杯酒上午喝得很香,而下午喝可能会变成苦的了。吃鸡肉也一样,当了解到对方喜欢...
    20d09b15d09c阅读 769评论 0 1