-
自己wp
题目给了一个pdf,打开是一个图片,使用Adobe Acrobat工具“文档”选项-->“检查文档”选项,检查出有隐藏文本,查看隐藏文本即为flag。
-
官方wp
- 将pdf转化为word,即可看到里面包含一个图片,一行文字。
- 使用pdf编辑工具,将图片移开,即可看到文字
- 使用strings命令找不到答案,但是可以使用"pdftotext"命令提取文本信息
pdftotext pdf.pdf //提取pdf文件中的文本信息
cat pdf.txt | grep flag //查看文件即可得到flag
坚持60s
程序是个小游戏,通过上下左右键控制中间的图片不被绿帽子碰到就好了(这个游戏真的hhhhhhhh)
但是呢,游戏是比较难滴。。因为后期绿帽子移动速度过快。
通过在线网站对java class文件反编译成java源码,在java源码PlaneGameFreame
中可以找到如下代码,代码中可以看到有flag,flag中的内容是base64加密的,因此使用base64解密就得到flag了。
- 在线java反编译地址
- 官方wp中推荐的java反编译包的文章
SimpleRAR
- 下载附件,是一个rar格式的压缩包,解压缩后有一个flag文件,内容是"flag is not here!",除此之外再无其他内容,改变rar后缀名为图片格式显示图片出错。由图片和一个rar压缩包可以合并为一个文件的经验猜测,此题应该为合成的文件。用winhex打开rar,查看16进制文件。
- 打开后可看到文件头确实为rar文件头,参考rar文件格式,可知此处rar文件内容不对,将
7A
改为74
,是png文件的头部类型编码,如下图所示,修改后得到正确的压缩包,解压缩后出现flag.txt和名为secret的空白图片。
- 用winhex打开secret,文件头为gif类型,将后缀名改为gif类型,用ps打开,发现有两个图层。
-
自己的办法: 两个图层均为空白,但实际是图片在图层的R通道中,修改图层曲线,将R通道的线拖离,即可看到蓝色的半个二维码显现,然后将两个图层合并,并补全扫码即可得到flag,如下图所示:
-
官网解决办法: 使用ps发现两个图层后,将每个图层提取出来,具体方法是"文件"-->“导出”-->“将图层导出到文件”。然后使用工具
stegsolve
打开两个图层,该软件可以查看每个图层的内容,因此可以清晰的看到有两个半二维码,使用stegsolve的合并功能,使用and
合并,合并为同一个图片文件,然后打开可以看到合并之后的残缺的二维码。如图:
- 然后不需要对二维码进行修复直接使用二维码查看工具
QRResearch
直接扫描就可以得到flag。但是,我在复现过程中使用该工具时显示解码失败,并没有直接得到flag,不知道为什么。
心得:巧用工具,多使用工具可以省很多蛮力。
gif
- 下载文件后为一堆黑白图片,总共104个,题目说是gif,所以想着是把所有的图片拼为gif,104个工程量有点大。。。就直接放弃了。。。看了wp才知道黑白图片为二进制码,将白色看为0,黑色看为1.
- 通过图片得到二进制字符串,然后解码可得Flag。可以使用python获取flag。
如来十三掌
- 下载后是一个Doc文本,打开文本一串看不懂的什么金刚经的文字,去与佛论禅网站进行解密,注意在解密前需要加上“佛曰:”,这样才能正确解密。
- 解密后的文本类似于base64解密,但是还不是,需要先进行rot13解密。
- 将rot13解密后的文本在进行base64解密即可得到Flag。
要了解各种加密算法的特征,熟悉加密算法。
掀桌子
题目中给出了一串字符串,将字符串两两一组换算成十进制数,在减去128后换算成字符即可得到flag,注意在提交时要加上flag符合。
python代码如下:
s = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5" \
"e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
result = ""
for i in range(0, len(s), 2):
result += chr(int(s[i:i+2], 16)-128)
print(result)
功夫再高也怕菜刀
下载附件为一个pcapng文件,没用过wireshark随便解压缩了一下结果有一个文件夹但是解压缩不开,上网查了一下才发现是wireshark抓包文件。用wireshark打开该文件。
-
binwalk工具查看该文件,可以看到里面有一个压缩包。
用foremost工具分离该文件,在输出结果中分离出一个压缩包,里面有一个flag.txt文件,但是需要密码。
在wireshark中使用分组字节搜索flag.txt字样,发现文件里还有一个6666.jpg图片。
-
在使用分组字节搜索6666.jpg,并追踪TCP流,追踪TCP流的方法是点击相应报文,右键-->Follw-->TCP stream。这样所有有关的报文都会完整呈现出来。通过追踪TCP流发现如下信息,里面包含的是图片的16进制数据,搜索到图片开始字节"FF D8",结束字节“FF D9”复制并使用winhex新建一个字节文件,便可得到图片。
-
图片上有解密密码,解开文件即可得到Flag。
Stegano
-
文件下载是一个pdf,使用pdfinfo查看信息,如下所示,Keywords中有一串base64码,解密后发现不是flag:
- 打开文本查看flag信息,也没有。
- pdf转word,发现红色框里有一行小字,也没有flag。
- 使用pdf.js技术打印Pdf文本。打开谷歌pdf.js插件,插件地址,火狐自带有插件。F12打开开发者模式,命令行中输入命令
document.documentElement.textContent
,即可得到信息,如下所示,其中有一串ABAB的字符串,联合pdfinfo中的Subject: <| tr AB .- |>
信息,将该字符串转化为摩斯密码,然后解密即可。
- python代码如下:
s = "BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB " \
"ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB"
mose = ''
for c in s:
if c == 'A':
c = '.'
if c == 'B':
c = '-'
mose += c
print(mose)
base64stego
-
压缩包打开发现需要密码,使用winhex打开压缩包查看,搜索
50 4B
,总共有三个,在第二个位置处看到之后的加密位置标记为09 00
,其余的50 4B
之后的加密位为00 00
,这说明这是zip伪加密,因此将09``修改为
00`,保存之后就可以直接解压缩,解压缩出来一个文件。
解压缩出来的文件里面是一行行base64码,每一行都可以解码成一句话,但是很遗憾,里面没有flag。
该文件隐写使用的是base64的编码技术,base64编码将38替换成46,如果不足会在最后补0,即最后总会有一两个
=
。该隐写的规则就是在最后填充=
时将字符隐写在里面,却不改变任何信息。python代码如下:
import base64
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('stego.txt', 'rb') as f:
bin_str = ''
flag = ''
for line in f.readlines():
stegb64 = str(line, 'utf-8').strip("\n")
rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")
offset = abs(b64chars.index(stegb64.replace('=', '')[-1]) - b64chars.index(rowb64.replace('=', '')[-1])) # 两个加密字符串比较,正确的base64编码和隐写后的编码字符串进行比较,得到差值,即隐写的那个字符。
equalnum = stegb64.count('=') # no equalnum no offset
if equalnum:
bin_str += bin(offset)[2:].zfill(equalnum * 2)
print([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)]) # 8 位一组