2.简简单单的图片

一.题目链接:

https://www.qsnctf.com/#/main/driving-range

二.基础知识  

2.1 使用工具简介及其安装方法

  • 1. ARCHPR:压缩包密码爆破工具
  • 2.QR_Research:二维码扫描工具
  • 3.cloacked-pixel:LSB隐写的python工具,主要用于提取png,bmp等图像的隐藏数据
    https://www.cnblogs.com/swaynie/p/17170677.html
  • 4.free file camouflage:可以将任何文件隐藏在图片里,同理,也可以从图片中分理出其他文件
  • 5.watermark:盲水印工具

三.开始解题

1.一共给了三个压缩包,打开第一个txt文件,将里面得qsnctf作为解压第一个压缩包得密码成功解压。并且打开hint.txt,给出了我们解题的顺序
image
2.一共两个图片,一个二维码,一个是搞笑人头,发现这个搞笑人头宽高好像不够,底下有的东西没显示出来,于是修改高,得到key:我沉醉了,但是直接当解密密码破解发flag2.jpg并不成功,于是继续将这个图片放进010deitor中,发现下方有类似base64编码得东西,
image
image
2.针对于这个二维码的处理,左边是不正常的二维码,因为二维码的小正方形的框框是黑色的,这里用随波逐流的工具先将其反色处理。处理后的二维码还是不太正常,中间少了小黑方块。这里我用的方法是:从网上找定位符,然后钉在桌面上,用ps打开图片,将钉着的图片一一贴上去。再用QR扫码工具进行扫描,得到信息:Zz123!@#qsn
image

image

3.回到010editor的类似base64编码部分,但是直接解base64并不能解码出来,但看见开头带得salt字样,想到是AES解密,使用下方链接解码,key为我沉醉了。这里为为什么说是aes解密:结合AI,base64就是编码,不是加密,本身并不具有保密性,而用了salt的,是为了保密性,常用的加密的方法就是AES
https://www.sojson.com/encrypt_aes.html
image
4.根据提示,在二维码的扫描结果的前面添加QSN就是密码,所以正确的解密码就是:QSNZz123!@#qsn
5.成功解压flaag2_key压缩包,里面的图片,这张图片里肯定还藏有内容,于是尝试了一圈,发现是盲水印,使用的工具是waterMark,根据图片,可以隐约的看到是qsnctfNB666
image
7.于是用这个去当下一个压缩包的解密密码,但错误,于是猜测盲点还在这张图片里,看了别人的wp,这里还要用到cloacked-pixel工具,具体使用过程如下。安装步骤如上基础知识简介
image
8.得到这一串数字,根据提示使用中文解码,使用下面网站解码,得到的是:青少年们起飞
https://dianma.bmcx.com/
image
9.于是解密最后一个压缩包,有一个txt文件本和图片,文本是盲文,于是盲文解密
image
10.这里的盲文解密很奇怪,我用随波逐流,cyberchef都解密不出来他们的密码,如果有小伙伴有别的方法解出来了可以评论区下方告诉我哟。这里的密码是qsnCTF9999
image
11.根据这里的文本提示,需要使用这个工具"带带我.jpg"的图片进行操作,密码就是上一步的qsnCTF999。按照下面操作后,得到一串RGB值
image
image
image
image
12.通过观察这段数值,和正常的图片rgb值很像,于是用随波打开一张正常的图片转为RGB,发现了规律:类似于(255,255,255)一行行排列。在kali里面用python将文本格式改为正常的图片内容,过程可能有点长,脚本如下,得到最后的qsnctf{xcswzj-bewei123456}

点击查看代码
b = ''     
#创建一个空字符串变量b,用于存储处理后的内容

with open('2.txt','r') as f:     
#使用with打开2.txt,并将文件对象赋值给f
    a = f.readlines()   #读取文件f的所有行,返回一个列表a,其中每个元素是文件的一行(包括换行符\n)
    for i in a:         #遍历列表a中的每一行,当前行赋值给变量i
        i = i.replace('{','')    #删除当前行中所有的{
        i = i.replace('}','')    #删除当前行中所有的}
        i = i.replace('\n', '')  #删除当前行中末尾的换行符\n(因为这里的\n是文件读取是自带的换行符)
        i = i.replace(' ',',')   #将当前行中的所有空格都变为,
        b += '(' + i + ')\n'     #将处理后的字符串i用括号括起来,并加上换行符,然后追加到变量b中,1,2,3会变为(1,2,3)\n追加到b
with open('3.txt','w') as s:     #打开3.txt,将文件对象赋值给s
    s.write(b)                   #在s里面写入b
    print('写入成功')             #打印写入成功

image

posted @ 2025-08-22 11:25  sun010  阅读(4)  评论(0)    收藏  举报