1.新建Word文档
打开这个word文档,发现什么都没有,应该是隐藏了什么,显示编辑标记看看,发现有一串佛曰。新与佛论禅,解密一下获得flag。
2.永不消逝的电波
给出一个WAV文件,听了一下感觉是morse code,使用Audacity打开查看。
细的打点,粗的是横线,转换为morsecode,再解密一下。
获得flag。
3.1-序章
给出日志文件并说明使用了sql注入,sql盲注简单来说就是,对目标进行猜测从而爆破出库,表,字段,值。此处是一个爆值的操作。
如蓝框圈出的三个盲注操作,这是盲注的第一次“猜测”:第一个是猜测ASCII值为120,第二个猜测ASCII值为121,显然就可以得知第一个猜测是不正确的。而第三个操作却是猜测ASCII值为40,在这个日志中第一次盲注就已猜测过ASCII值为40了(在那次盲注的下一次盲注是猜测ASCII值为41,从上面分析也可知这次猜测也是不对的),所以这个猜测为第二次猜测!
通过观察发现每次猜测都是从40开始猜测,即可以推测出:除了最后一次猜测,在每次猜测的结果下面都有一个猜测ASCII值为40的一个猜测。
我是按照以上原理,查找“40”这个元素,将盲注到的ASCII值(即盲注’40‘的上一条语句盲注的值)逐个记下,我认为这道题这么做快一点(实际上也不快)。
然后就是转text。
获得flag。
4.base!
用cyberchef打开,解码出的文本没发现什么有价值的。
但是很奇怪,有无法正常显示的字符,推测为关于base64的隐写,而不是关于文本的隐写。
我们知道base64编码有一个特点,就是有时编码后的文本会跟着一个或两个==,像这样:
这个=是补位出来的!
所以……此为base64的隐写原理:
通过base64编码解码原理可以得出:补0的部分不影响解码,故可以利用这些补的二进制位0进行隐写,即将需要隐写的字符串转换为二进制位,去替换补0的部分,达成隐写的目的。 一行base64编码最多两个=号,那么只能隐写4位二进制位,隐写字符串就需要很长的base64编码行。
更详细的可以去看看CSDN上面其他人的文章,大佬们讲的都很好!
此为py代码:
import base64
from itertools import count
from token import EQUAL
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('1.txt','rb') as f:
bin_str = ''
for line in f.readlines():
linebase64 = str(line,"utf-8").strip("\r\n")
rowbase64 = str(base64.b64encode(base64.b64decode(linebase64)),'utf-8').strip("\r\n")
equal = linebase64.count('=')
if equal:
offset = abs(b64chars.index(linebase64.replace('=','')[-1])-b64chars.index(rowbase64.replace('=','')[-1]))
bin_str+=bin(offset)[2:].zfill(equal*2)
print(''.join([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]))
运行得到一串base编码。
解码,获得flag。
5.Jvav
看图片是正常的样子,看到java联想到java盲水印隐写,解一下。
打开解出来的水印图片,获得flag。