CTF-BugKu-杂项-29-33

2020.09.15

今天换个新壁纸,换个新背景音乐,燃起来💃

做题

第二十九题 论剑

https://ctf.bugku.com/challenges#论剑

  1. 图片详情没啥信息,不是正方形,考虑改成正方形,果真有用,但是有部分被挡住

  2. StegSolve看了没啥东西,binwalkbinwalk -e lunjian.jpg发现藏了一张图片,手动分离一下dd if=lunjian.jpg of=res.jpg skip=17569 bs=1

  3. 打开还是一张论剑⚔️再次尝试改成正方形,没啥东西,再用StegSolve看看,没啥东西

  4. 不知道该干嘛了,但就在我拖着winhex看的时候,在中间部分发现疑似有用信息,是一串二进制,转换一下试试mynameiskey!!!hhh

  5. md,这看起来好像没什么用,但是我一想第一步中得到的结果最后也有个hhh,是不是有什么联系,第一步明显是十六进制,我把它转化为十六进制与第一步结果对比
  6. 好像并不是太一样,看来是我想多了……mdfuck😕
    第一步结果:flag (666C61677B6D795F6E61 65 4 121 7 hhhh
    第五步结果: 6D79 6E616D6569736B6579!!!hhh
  7. 原来是这样,在二进制后边是一个被修改了的7z压缩文件头,把它改成37 7A BC AF 27 1C这样,就可以正常分离出来一个压缩包了,哈哈哈哈
  8. 用二进制转换的密码打开压缩包,有得到一个论剑⚔️,不是正方形,修改高度可得其余flagflag{666C61677B6D795F6E616D655F482121487D}
    第一步结果:flag (666C61677B6D795F6E61 65 4 121 7 hhhh
    第八步结果: 660 6167 1 D 5F 61 6D655F482121487D} hhhh
  9. 当然,最终提交结果,还得把中间的十六进制转化为字符串,也就是flag{my_name_H!!H}

第三十题 图穷匕见

https://ctf.bugku.com/challenges#图穷匕见

  1. 图片详情有些提示,图形不是正方形,先改成正方形,打开winhex,发现没必要改了,全是数字,肯定有鬼🐢

  2. 把数字取出来,十六进制转ascii试试,得到一堆坐标似的东西,联系第一步中的提示,知道我们要根据这个坐标画图
  3. 这是我喜欢的环节,脚本环节,哈哈哈,用py来画个图吧,奥力给
# 此脚本用于根据坐标绘制图片
import matplotlib.pyplot as plt

i = 0
fig = plt.figure()
with open('res2.txt') as f:
    for xy in f.readlines():
        xy = xy.strip()
        xy = eval(xy)
        plt.scatter(xy[0], xy[1], c=255, marker=".")
        i += 1
        # print("\r\n[+] Has dealed", i, "lines")/

plt.show()

可能是脚本的问题,跑了老久都没跑出来,改个多线程试试……

第三十一题 convert

https://ctf.bugku.com/challenges#convert

  1. 打开时二进制文件,那么也就是说,我们要把显示的二进制,转化为存储的二进制,我应该怎么办
# 此脚本用于转换看到的二进制到存储的二进制
import struct
with open('1.txt') as f:
    miwen = f.read()
    with open('res', 'wb')as fp:
        for i in range(int(len(miwen)/8)):
            a = struct.pack('B',int(miwen[i*8:(i+1)*8],2))
            fp.write(a)
    f.close()
    fp.close()
  1. 通过上边脚本,成功将二进制转储,得到一个rar压缩文件,解压得到下图
  2. 查看图片详情,得到base64信息,转码得flag flag{01a25ea3fd6349c6e635a1d0196e75fb}

第三十二题 听首音乐

https://ctf.bugku.com/challenges#听首音乐

  1. 下载好慢,先做下一道
  2. ok了,提示很明确,stego打开发现奇怪的地方
  3. 放大来看,酷似某种密码,摩斯密码,长短长短……转化为密码..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.
  4. 解码得flag5BC925649CB0188F52E617D70929191C,鬼知道我试了多少遍😒

第三十三题 好多数值

https://ctf.bugku.com/challenges#好多数值

  1. 下载打开是确实是一堆数值,但是打眼一看就是rgb颜色吧,那么思路肯定就是用颜色画图了吧,颜色是有了,但是得有图片的宽度和高度啊,要不然怎么画,总不能把所有的颜色画到一个直线上吧🧐
  2. 很好,能学一下怎么画图了,代码来自于这里
from PIL import Image

def Crack(n):#因数分解
    flag = []
    for each in range(2,int(n **0.5)+1):
        if(n % each == 0):
            print(each,int(n/each))
            flag += [(each,int(n/each))]
    if len(flag) == 1:return flag[0]
    else:
        choice = input("选择第几组(0-%s):"%(len(flag)-1))
        return flag[int(choice)]
def Paint(X,Y,listrgb):#根据字符串列表画图
    pic = Image.new("RGB",(X, Y))
    i=0
    for x in range (0,X):   
        for y in range (0,Y):
            temp = listrgb[i].split(',')
            pic.putpixel([x,y],(int(temp[0]),int(temp[1]),int(temp[2])))
            i = i+1
    pic.show()
    #pic.save(r"C:\Users\ben\Desktop\flag%s.png"%(X))
listrgb = open(r"C:\Users\ben\Desktop\1.txt").readlines()
X,Y = Crack(len(listrgb))
Paint(X,Y,listrgb)
Paint(Y,X,listrgb)
  1. 然后结果就出来了,大佬写的脚本就是帅flag{youc@n'tseeme}
  2. 那么我能不能用这个脚本去解决第三十题呢??我感觉应该可以吧
posted @ 2020-09-15 11:32  乔悟空  阅读(762)  评论(0编辑  收藏  举报