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

ctf-BugkuCTF-misc

程序员文章站 2022-05-15 11:25:06
...

1.这是一张单纯的图片

使用winhex打开图片,在图片结尾发现一串&#开头的16进制串,直接对16进制字符hex解码即可

2.隐写

打开压缩包发现文件时坏的,放入tweakpng.exe中修复并加长高度,直接使用画图3D打开即可

3.telnet

解压发现是一个数据包,直接用wireshake打开,题目提到telnet,搜索telnet,按字节大小排序,阅读可直接看到答案

4.眼见非实(ISCCCTF)

开始得到的文件是zip,直接解压发现word文档,打不开,用winhex打开发现这是一个zip压缩包,改后缀名解压,发现是一个app的文件,直接打开查找即可发现结果

5.又一张图片,还单纯吗

将图片使用winhex打开,查询ffd8,ffd9,发现这个图片文件中是可以拆成两个图片文件而不丢失东西,打开后面那一个即可得到答案

6.猜

直接将图片放入百度识图中即可得到答案

7.宽带信息泄露

打开发现一个bin文件,根据题意我们可知这是一个路由配置文件,我们使用RouterPassView软件打开文件,查阅即可得到密码

8.隐写2

用binwalk打开图片文件发现图片尾部的zip文件,取出解压,发现一个提示和有密码的压缩包,打开提示最重要的是密码是三个数字,直接暴力**得到密码,解压又得到一张图片,使用winhex打开图片可在结尾发现flag,对flag中的内容进行base64解密,即可得到答案

9.多种方法解决

用winhex打开文件,发现提示image,base64和一串很长的base64编码的字符串,对字符串解码保存为png文件,二维码扫描即可得到答案

10.linux

解压获得linux镜像文件,在linux下使用mount文件挂载即可得到答案

11.中国菜刀

打开文件,查询TCPstream发现flag.tar.gz文件,在binwalk中检查分离解压即可得到结果

12.隐写3

解压文件,获得一个错误的png文件,放入tweakpng中修复并更改高度即可看到flag

13.做个游戏(08067CTF)

使用jd-gui对解压获得的程序进行反汇编,阅读反汇编获得程序即可得到key

14.细心的大象

使用winhex打开图片查找图片结尾发现图片中隐含了rar文件,分离出的rar是加密的,然后打开图像属性发现备注是一段字符串,使用base64解密即可得到rar文件解密密码,解密得到png图片,发现无法打开,放入tweakpng,修补并更正高度,打开即可看到flag

15.爆照(08067CTF)

用winhex打开文件查询jpg文件结尾发现该照片文件中包含着一个zip加密文件,解密即可得到8个文件,逐一检查发现部分是bmp文件,部分是jpg文件,打开88.jpg,即可发现二维码,扫描得到结果,点击888.jpg文件属性,发现备注的值,使用base64解密即可,使用winhex打开8888.jpg,查找图片结尾,发现该图片内含zip压缩包,打开压缩包发现二维码,扫描即可得到结果

16.图穷匕见

用winhex打开图片文件发现在图片即为之后有一串16进制数字,拷贝并再次放入winhex中(即进行hex解码),发现一大段坐标值,将其读出并画在图片上,保存,即可得到答案

from PIL import Image
fi=open('a.txt',"rb")
zuobiaostr=fi.read()
fi.close()
zuobiao=zuobiaostr.split(chr(10))
im=Image.new("1",(300,300))
for x in xrange(0,300):
    for y in xrange(0,300):
        im.putpixel((x,y),255)
for i in zuobiao:
    zuobiaolist=i.split(",")
    x=int(zuobiaolist[0][1:])
    y=int(zuobiaolist[1][:-1])
    im.putpixel((x,y),0)
im.save("2.jpg")

17. convert

打开发现一堆二进制数字,转为16进制后发现是zip文件,打开发现是一张图片,在图片属性主题处发现base64编码,解码即可得到答案。

18.听首音乐

下载发现一首歌曲,用Audacity打开可以发现摩尔电码,解密即可

19.好多数值

下载获得文件,发现是RGB数值,只需将其画在图中即可

from PIL import Image
list1=[]
fi=open("4.txt","rb")
while 1:
    line = fi.readline()
    if not line:
        break
    else:
        list1.append(line)
fi.close()
im=Image.new("RGB",(503,122))
for i in xrange(len(list1)):
    listrgb=list1[i][:-2].split(",")
    im.putpixel((i/122,i%122),(int(listrgb[0]),int(listrgb[1]),int(listrgb[2])))

im.save("5.jpg")

20.妹子的陌陌

下载获取图片,使用binwalk可以发现在图片中有zip文件,分离发现该zip解压需要密码,将图片上红色的文字输入,即可解压,解压后获得一串摩斯电码,一个网址和一个aes的key,先解密摩斯电码获得一个网址(可以在线解密也可以脚本解密,脚本解密注意可能存在符号的摩斯电码与字母的相同)

#encode=utf-8
s="..../-/-/.--./---.../-..-./-..-././-./-.-./---/-.././.-.-.-/-.-./..../.-/..../..-/---/.-.-.-/-.-./---/--/-..-."
zimucodebook = {'A':".-",'B':"-...",'C':"-.-.",'D':"-..",'E':".",'F':"..-.",'G':"--.",'H':"....",'I':"..",'J':".---",'K':"-.-",'L':".-..",'M':"--",'N':"-.",'O':"---",'P':".--.",'Q':"--.-",'R':".-.",'S':"...",'T':"-",'U':"..-",'V':"...-",'W':".--",'X':"-..-",'Y':"-.--",'Z':"--.."}
shuzicodebook={'1':".----",'2':"..---",'3':"...--",'4':"....-",'5':".....",'6':"-....",'7':"--...",'8':"---..",'9':"----.",'0':"-----"}
fuhaocodebook={'.':".-.-.-",':':"---...",',':"--..--",':':"-.-.-.",'?':"..--..",'=':"-...-","'":'.----.',"/":"-..-.",'!':"-.-.--","-":"-....-","_":"..--.-",'"':'.-..-.',"(":'-.--.',")":'-.--.-',"$":'...-..-',"&":'....',"@":".--.-.","+":'.-.-.'}
cipher=""
ss = s.split("/")
print ss
for c in ss:
    sign=False
    for k in zimucodebook.keys():
        if zimucodebook[k] == c:
             cipher+=k
             sign=True
             break
    if sign:
        continue
    for k in shuzicodebook.keys():
        if shuzicodebook[k] == c:
             cipher+=k
             sign=True
             break
    if sign:
        continue
    for k in fuhaocodebook.keys():
        if fuhaocodebook[k] == c:
             cipher+=k
             sign=True
             break
    if sign:
        continue
print cipher     

打开网址发现是一个在线解密的网址,我们注意在给出的那个网址最后的字符串无法理解,极有可能进行了aes加密,对其解密,打开网址即可得到二维码 ,扫描二维码即可得到结果

21.就五层你能解开吗

下载得到一个压缩包,根据题意我们可知第一步要先进行crc32碰撞,用winrar打开发现后面3个txt文件只有6个字节,可以进行crc32碰撞**,在网上找了一个脚本进行**

ctf-BugkuCTF-misc

将三个txt对应的crc32进行**,组成一句有意义的话即为第一层密码,解压,得到一个压缩包CRC32 Collision.7z,再解压进入第二层,由题意可知这里是维吉尼亚加密,并给出了key和密文,只不过这里的key有10001条,需进行筛选,观察密文,发现开头有可能是the加密,以此为依据筛选,获得解压密码

s='rla xymijgpf ppsoto wq u nncwel ff tfqlgnxwzz sgnlwduzmy vcyg ib bhfbe u tnaxua ff satzmpibf vszqen eyvlatq cnzhk dk hfy mnciuzj ou s yygusfp bl dq e okcvpa hmsz vi wdimyfqqjqubzc hmpmbgxifbgi qs lciyaktb jf clntkspy drywuz wucfm'
fi=open("keys.txt","rb")
keystr=fi.read()
fi.close()
keylist=keystr.split('\n')
print len(keylist) 
for i in keylist:
    if i[:3]=="YEW":
        key=i[:-1]
        j=0
        mingwen=""
        for i in xrange(len(s)):
            if s[i]>='a' and s[i]<='z':
                mingwenint=ord(s[i])-ord(key[j%40])+ord('A')
                j=j+1
                if mingwenint>ord('z'):
                    mingwen+=chr(mingwenint-26)
                elif mingwenint<ord('a'):
                    mingwen+=chr(mingwenint+26)
                else:
                    mingwen+=chr(mingwenint)
            else:
                mingwen+=s[i]
        print mingwen
   

解压文件进入第三层,这里的提示是sha1碰撞,根据提示这里的密文和其sha1值都有确实,暴力**补齐即可

import re
import hashlib
pwd="%s7%s5-%s4%s3?"
sha1="619c20c.a4de755.9be9a8b.b7cbfa5.e8b4365."
for a in xrange(32,128):
    for b in xrange(32,128):
        for c in xrange(32,128):
            for d in xrange(32,128):
                password=pwd%(chr(a),chr(b),chr(c),chr(d))
                tmp=hashlib.sha1(password).hexdigest()
                if re.findall(sha1,tmp):
                    print (tmp,password)

获得解压密码进入第四层发现这里需要两个md5相同的程序,其中一个程序输出给定,上网查询发现存在使用“构造前缀碰撞法”获得相同md5的程序,而其中一个即是我们题中的程序,我们将另一个程序输出作为密码即可解压进入第五层,第五层提示RSA,于是将解压得到的pem文件放入openssl中可以读到RSA的n,e,而这里的n,e都比较大,可用wiener-attack进行攻击,解出d,在对密文解密即可得到最后答案

22.Linux2

将下载文件解压使用notepad++打开,直接查找KEY{}即可得到答案。

 

相关标签: ctf bugkuctf misc

推荐阅读