欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一届巅峰极客

程序员文章站 2022-03-09 21:05:33
...

这个比赛真的是神仙打架,肉鸡划水到底,记下复现过程

misc

warmup

图片放去stegsolve看一下可以看见最低位有异常数据(最上面

第一届巅峰极客

具体分析就会看见

第一届巅峰极客

第一届巅峰极客

第一届巅峰极客

两个ook编码,一个brainfuck编码,剩下的就是解码了

这里有个注意的是,他的编码每一句都在后面加了个英文的句号(你是魔鬼吧??),解码时要把它去掉

第一届巅峰极客 第一届巅峰极客 第一届巅峰极客

拼在一起就是flag了

loli

有个二维码,手机扫不出,用QRresearch去扫一下

第一届巅峰极客

讲道理我没懂255这个tips是在提示什么,然后题目有个0xFF,异或一下然后去binwalk一下,就能看见有个png,foremost出来,

第一届巅峰极客

11列,每列都是八个点,联想到二进制,可能就是二进制转成ascii码对应回字母

人工转很麻烦,用个脚本帮忙转

from PIL import Image

def getBinaryToChar():
    count = 0
    ans = ""
    binStr = ""
    # 转换成灰度图像(黑点0,白点255)
    img = Image.open('2.png').convert('L')
    # 遍历像素点(按行读)
    width, height = img.size
    for h in range(height - 1): # 是否-1均可,最后一行是11个0111111111
        for w in range(width - 1):  # 需要-1,最后一列全是0
            pixel = img.getpixel((w, h))
            if pixel == 0:
                color = 1   # 黑点1
            else:
                color = 0   # 白点0
            # 9个点一组,构成0xxxxxxxx
            count += 1
            ans += str(color)
            if count == 9:
                if ans != "011111111":
                    binStr += chr(int(ans,2))  #int(ans,2)构建一个int,进制为二进制
                count = 0
                ans = ""
    return binStr

if __name__ == '__main__':
    s = getBinaryToChar()
    print(s)
    with open('res.txt', 'wb') as f:
        f.write(s.encode())

然后就看res.txt了

第一届巅峰极客