注:题目均来自isctf2024
misc
老八奇怪自拍照
这题有个提示,就是数字521,猜测是lsb隐写,而521可能是rgb的位宽果然有压缩包,save bin看一下,压缩包提示损坏,但是可以用修复压缩包选项修复并提取文件,得到了另一张图片用随波逐流一把梭看一下发现这一串,打开属性看发现是作者,查了一下,这题需要用到steghide工具,将文件和工具放在一个文件夹下输入
.\steghide.exe extract -sf isctf.jpg -p 1ScTf2024!
得到一个txt,打开就是flag
秘密
这题下载附件后是一个伪加密,用binwalk直接分离出来得到一张图片,结合题目名字是秘密,盲猜是oursecret加密,在010里面搜索发现了password,更## 标题确定了,用oursecret解密,解出来txt文档,点进去发现文件大小与字数不符,猜测是零宽隐写,用工具查看确实是
游园地2
这题是一个找地点的题目根据图里面的山崎居酒屋搜索定位确定在武汉市江汉区,在用百度搜索一下,可以确定是鸣笛1988商业街,再去网上搜索武汉的圣地巡礼,三色绘恋是最多的答案,但是提交了不对,最后去搜了b站,试了一下《恋爱绮谭》中的充能国安路,猜对了
神秘ping
下载附件后用010查看,并没有找到有用的信息用随波逐流一把梭看一下,也没信息,再回到010上来仔细找一下在后面发现了流量包文件,只不过是反着写的,用hex提取出来放进whireshark分析
提取过程中去找了大佬的脚本
with open("ping",'rb') as f: #以二进制的形式读取文件内容content=f.read() reverse_content=content[::-1]
with open("p1ng.pcap",'wb') as b: #以二进制写入b.write(reverse_content)
去查了一下有关信息
Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 其原理是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo回显 请求(Echo Request)报文,并根据回复的ICMP回显应答消息(Echo Reply),测试目的站是否可达并获取连接的丢包率和平均往返时间等有关状态信息
就过滤了icmp流量,去搜了一下,使用kali进行
tshark -r inversion.pcap -Y "icmp.type == 8" -T fields -e ip.ttl > output.txt
这里的加密方式不是很清楚,就去看了一下大佬的博客
f = open('out.txt', "r")
str = ''
Binary = ''
number = ''
while 1: num = f.readline() if not num: break if num.rstrip() == '63': # 去掉每行后面的空格 Binary = '00' elif num.rstrip() == '64': Binary = '' elif num.rstrip() == '127': Binary = '01' elif num.rstrip() == '191': Binary = '10' elif num.rstrip() == '255': Binary = '11' str += Binary
for i in range(0, len(str), 8): number += chr(int(str[i:i + 8], 2))
print(number)
在kali里面运行
watermark
根据名字,不难猜出是水印有关的题目
下载附件后有三个文件,第一个txt文档,根据提示,使用在线工具得到了key1,
第二张图片。使用watermark盲水印工具查看第三个压缩包的密码就是key1和key2,解压后得到txt在里面搜索isctf发现flag
pwn
Netcat
今天做个水题了,巩固nc的格式和使用方法注意域名里的冒号要改为空格
crypto
我和小蓝鲨的秘密
题目:
from PIL import Image
from Crypto.Util.number import bytes_to_long, long_to_bytes
import numpy as npn = 29869349657224745144762606999
e = 65537original_image_path = "flag.jpg"
img = Image.open(original_image_path)
img = img.convert("RGB")img_array = np.array(img)
h, w, _ = img_array.shapeencrypted_array = np.zeros((h, w, 3), dtype=object)
for i in range(h):for j in range(w):r, g, b = int(img_array[i, j, 0]), int(img_array[i, j, 1]), int(img_array[i, j, 2])encrypted_array[i, j, 0] = pow(r, e, n)encrypted_array[i, j, 1] = pow(g, e, n)encrypted_array[i, j, 2] = pow(b, e, n)np.save("encrypted_image.npy", encrypted_array)
print("图片已加密并保存为 encrypted_image.npy")
这题根据读代码发现是一个对像素进行加密,但本质还是rsa,就用了我脚本库里的脚本了
from PIL import Image
from Crypto.Util.number import bytes_to_long, long_to_bytes
import numpy as np
import gmpy2
n = 29869349657224745144762606999
e = 65537
phi = (160216064374859 - 1) * (186431677583461 - 1)
d = gmpy2.invert(e, phi)
encrypted_array = np.load("encrypted_image.npy", allow_pickle=True)
decrypted_array = np.zeros_like(encrypted_array, dtype=np.uint8)
h, w, _ = encrypted_array.shapefor i in range(h):for j in range(w):decrypted_array[i, j, 0] = pow(int(encrypted_array[i, j, 0]), d, n)decrypted_array[i, j, 1] = pow(int(encrypted_array[i, j, 1]), d, n)decrypted_array[i, j, 2] = pow(int(encrypted_array[i, j, 2]), d, n)
decrypted_img = Image.fromarray(decrypted_array, "RGB")
decrypted_img.save("flag.jpg")
print("flag.jpg")
最后输出的图片就是flag
ISCTF{success_bluesharkinfo_gogogo!}