
第二届数据安全大赛(数信杯)东部赛区数据分析部分WP
传输文件都是使用ftp,其中包括响应和请求,FTP协议中STOR代表上传文件,直接查STOR字符串一共多少个然后除以2(因为分请求和响应)就是101个,特殊文件名就是最后传输的文件key.txt。过滤流量,发现大部分为ftp和tcp协议,不太可能是tcp,直接找ftp,根据判断下一流是否成功响应别的页面内容得到用户名和密码。Flag值:a18b8e2d1a8ee267599b04be62f0a26
数据分析题
数据分析1
1.1
Flag值:458e8dbe703531b99e3381853b3134ef
过滤流量,发现大部分为ftp和tcp协议,不太可能是tcp,直接找ftp,根据判断下一流是否成功响应别的页面内容得到用户名和密码
1.2
Flag值:717c0890a66bcf9524e87fdccb7dbf4
传输文件都是使用ftp,其中包括响应和请求,FTP协议中STOR代表上传文件,直接查STOR字符串一共多少个然后除以2(因为分请求和响应)就是101个,特殊文件名就是最后传输的文件key.txt
1.3
Flag值:3f3c1b49504191faf6576866f99806cd
首先流量中一共有100个png,逐一使用原hex数据提取出来,发现是混乱的,并且找到了两个参数a和b,根据题目名称:程序员喜欢猫猜测是猫脸变换,a和b就是变换解密的参数
使用kali中的montage将1-100拼为一个400x400的png
使用脚本解密(刚开始密钥填反了还以为是脚本轮数有问题,结果是ab密钥反了),注意ab密钥的顺序
import cv2
import numpy as np
def arnold_decode(image, shuffle_times, a, b):
""" decode for rgb image that encoded by Arnold
Args:
image: rgb image encoded by Arnold
shuffle_times: how many times to shuffle
Returns:
decode image
"""
# 1:创建新图像
decode_image = np.zeros(shape=image.shape,dtype=int)
# 2:计算N
h, w = image.shape[0], image.shape[1]
N = h # 或N=w
# 3:遍历像素坐标变换
for time in range(shuffle_times):
for ori_x in range(h):
for ori_y in range(w):
# 按照公式坐标变换
new_x = ((a * b + 1) * ori_x + (-b) * ori_y) % N
new_y = ((-a) * ori_x + ori_y) % N
decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]
return decode_image
img = cv2.imread("flag.png") #变换的图片
a = 0x729e
b = 0x6f6c53
st = 1
pic = arnold_decode(img,st,a,b)
cv2.imwrite('flag2.png',pic) #保存得到的图片
得到一张二维码,扫码后显示fake flag
zsteg发现一部分字符串并且使用stegsolve打开在0通道发现可疑黑色数据块
过滤0通道得到字符串,解密后得到flag
数据分析3
3.1
Flag值:95e1da8517497ee29e716a2835375eeb
追踪到tcp流第846流之后发现攻击者成功登录,第846流中的账户和密码即为正确
3.3
Flag值:a18b8e2d1a8ee267599b04be62f0a26a
直接从成功登陆后进行追踪tcp流,在较后面的952流中将回显的字符串base64解密后得到数据库用户名密码等信息
数据分析5
5.2
Flag值:4825376109164835
直接搜索关键字shell,发现XSS和上传webshell的URL,XSS漏洞利用,eval中就是使用的密钥
更多推荐
所有评论(0)