2019年山东省深思杯网络安全大赛

刚参加完比赛,总结一波。
第一题:签到题
2019年山东省深思杯网络安全大赛_第1张图片
下载完成之后发现是个.exe文件 杂项万年套路步骤,用winhex打开,搜索flag,找到,提交。。。
第二题:qiu咪
发现是一张flag.png。。万年套路 用winhex打开。啥也没发现,然后放在kali里边 binwalk一下,也没发现有隐藏信息。。
用了隐写图片神器(stegsolve.jar)发现在red plan 0、blue plan 0 green plan 0有跟摩斯密码似的东西。。
那就放在低通道看看里边的信息2019年山东省深思杯网络安全大赛_第2张图片
没发现什么东西 仔细想了想 信息肯定是隐藏在这里,当把bit plan order 调到BGR时 好消息 发现了base64解码提交。。
2019年山东省深思杯网络安全大赛_第3张图片
第三题:上上下下
下载完成之后 打开发现是 上下左右英文字母的首字母大写
常规一波之后(用工具)没有发现什么有价值的东西,想肯定不是那么做
突然想到python中俗称"海龟"库画图时 不就是控制画笔上下左右来进行绘画嘛
那肯定是用程序把他画出来,用纸笔画了一下发现像个F,猜想画完肯定是flag(动手写程序呗)(偷偷参考了一下鑫哥的wp 不是太明白 为啥要用两个值来画图)

from PIL import Image
im = Image.new('RGB',(1000,1000),'black')
 #把flag中的字母读出来
file = open('flag.txt')
line = file.readline()
a = [300,300] #起始位置
#把flag[0]当做左右移动 flag[1]当做上下移动
for i in line:
    if i == 'D':
        a[1] = a[1]+1
    if i == 'U':
        a[1] = a[1]-1
    if i == 'R':
        a[0] = a[0]+1
    if i == 'L':
        a[0] = a[0]-1
    im.putpixel(a ,(255,255,255)) ## putpixel是通过坐标点来进行画图
##刚开始是按照惯例 让i == 'u' +1 画出来是个倒立的图形 所以只能让 ‘D'+1
im.show()

2019年山东省深思杯网络安全大赛_第4张图片
第四题:我和我的祖国
下载打开 发现是音乐的隐写(我又开始常规一波) 用audacity软件打开

2019年山东省深思杯网络安全大赛_第5张图片
在最后发现了这段帧跟别的帧有n大的区别
可以看出有点像高低电平 通俗知识 一般把高电平当做1 低电平当做0 所以尝试二进制转化为字符串一波(以上0 1 代码手打 有更好的方法 欢迎推荐 )

#a = [0b01100110, 0b01101100, 0b01100001, 0b01100111, 0b01111011, 0b01000110, 0b01110101, 0b01001110, 0b01011111, 0b01100111, 0b01101001, 0b01000110, 0b01111101]
a = "0110011001101100011000010110011101111011011001100110010100111000011001100110010000110100001101100011100000110010001100000011010100110001001100110110001000110101001101000110001101100100011001000011010100111001011000100011000000110100001110000011010100110111001100010011100101100110001110010011010001111101"
b = ""
## 统计一下a的长度 二进制转化为ascii码字符串  8为看成一个整体,看能否被8除尽
print(len(a))
lens = int(len(a)/8)
for i in range(0,lens):
    b = b+chr(int(a[i*8:i*8+8],2))
print(b)

第五题:压缩包的秘密
下载完成打开发现是个损坏的压缩包
用winhex打开看了一下
2019年山东省深思杯网络安全大赛_第6张图片
打开一看 第一行 是 4B 50 04 03 zip压缩包的开头不应该是(50 4B 03 04)
有猫腻 而且里边的lfgat.xt 经过两两互换之后成了 flag.txt,而且在最底下是base64 去解码也没有成功 猜想是不是所有的都是两两互换 就尝
试了一下把最底下的base64互换一下 看能否解码成功 如果能就代表猜想正确
互换之后的base64:(dGhlcmUtaXMtaGFsZi1wd2Qtc2hlbnNp)
解码为:there-is-half-pwd-shensi说明猜想成功
下边就把全部的两两互换 在比赛的时候 (手撕 生换)(…)可以写脚本跑出来…
打开发现需要密码 但是我们已经知道一半密码。。用掩码攻击的到另一半密码:sdnisc 输入密码拿flag

第六题: 你真的很不错
提示用winrar解压 想到可能是ntfs数据流
2019年山东省深思杯网络安全大赛_第7张图片
发现一张flag.png 导出 提交

简单的密码
hellO,everyone Are YOU huNGrY woUld you like To eAt BAcon?
题目为一个英语句子 但是在后边提示bacon 所以想到的是培根密码解密
培根密码有两种
所以我们尝试一下 看那种对
第一种 把小写字母转化为a 大写字母转化为b

#coding=utf-8
#转化为小写字母 小写字母对应大写铭文
a = "hellOeveryoneAreYOUhuNGrYwoUldyoulikeToeAtBAcon"
count = ""
for i in a:
    if ord(i) >= 97 and ord(i) <= 122:
        i = "a"
        count += i
    else:
        i = "b"
        count += i
b = len(count)//5
for i in range(b):
    print count[i*5:i*5+5]

输出为
aaaaa
aaaba
abbba
abbab
aabaa
在线工具解密即可
另一种是把小写字母转化为A 大写字母转化为B

#coding=utf-8
#转化为大写字母 大写字母对应小写铭文
a = "hellOeveryoneAreYOUhuNGrYwoUldyoulikeToeAtBAcon"
count = ""
for i in a:
    if ord(i) >= 97 and ord(i) <= 122:
        i = "A"
        count += i
    else:
        i = "B"
        count += i
b = len(count)//5
for i in range(b):
    print count[i*5:i*5+5]

输出为
AAAAB
AAAAA
AAABA
ABBBA
ABBAB
AABAA
AAAAA
AABAA
BABBA
也在线解密即可

你可能感兴趣的:(CTF)