PCTF-BrokenPic

2017-09-22  本文已影响0人  2mpossible

下载下来是一个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

上一篇下一篇

猜你喜欢

热点阅读