[CTF] 攻防世界MISC高手区部分题目WriteUp(2)

记录一些有意思的题目

7-2

下载解压得到一个文件夹,里面有一堆文件,对所有文件名进行 base64 解码

# coding=utf-8
import os
import base64

for name in os.listdir("/root/桌面/problem"):
    print name
    # 由于文件名不是4的倍数,需要在后面补‘=’
    missing_padding = 4 - len(name) % 4
    if missing_padding:
        name += '=' * missing_padding
    print str(base64.b64decode(name.encode()))

看到输出的信息里只有这个文件解码后不是乱码:YWluaWRleGluZ3podWFuZw
base64
打开文件后看到里面存在一对花括号,那么很有可能这些数字解码后就是flag

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 94 22 42 91 23 {82 42 82 52 63 21 42 22 73 21 }00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

这次使用的是9键加密,第一个数字代表9键键盘下的数字,第二个数字代表该数字下的第几个字母。解密后再用一次凯撒加密即可得到 flag

wdflag{ylyoselfve}

ewm

下载解压后得到一个文件夹,打开看到里面是一堆二维码的部分图块,按大小被分为了 small 和 big 两部分,总共两个二维码,可以把图片拖到 word 里拼图,拼完的二维码扫出来就是 flag,而且两组图片拼图的结果都是一样的,这里给一个拼图的脚本(并不能完美的拼出来,但已经可以扫出来了)

import os
from PIL import Image
# 由于二维码并没有被完整的切开,都保留了一部分边缘
# 所以可以遍历所有图片来找到两个边缘符合的图片进行拼图

# 设置已知的图片
def set_image(in_file, x, y):
    code[y][x] = in_file
    file.remove(in_file)

# 找到一张图片的右边一张
def find_right(in_file):
    result = ''
    pixes = Image.open(os.path.join(current_path, in_file)).load()
    # 计算出已知图片的右侧像素值(以二进制存储)
    pix = 0
    for row in range(width):
        r, g, b = pixes[width-1, row]
        pix <<= 1
        if r + g + b > 255:
            pix += 1
    # 用同样的方法在剩下的图片里找到与已知图片边缘相符的图片
    for fi in file:
        pixes = Image.open(os.path.join(current_path, fi)).load()
        pix2 = 0
        for row in range(width):
            r, g, b = pixes[0, row]
            pix2 <<= 1
            if r + g + b > 255:
                pix2 += 1
        if pix 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值