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