前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >西湖论剑2019--一道MISC题目的解题思路

西湖论剑2019--一道MISC题目的解题思路

作者头像
KevinBruce
发布2020-03-12 16:05:38
6700
发布2020-03-12 16:05:38
举报
文章被收录于专栏:CTF及算法学习

TTL题的writeup

第一次打西湖论剑,啥都不懂,被题目虐的很惨,一共就做出来两道题,但也算有收获。这里分享一下TTL那道misc题目的writeup,算是给自己点安慰吧。

题目描述

我们截获了一些IP数据报,发现报文头中的TTL值特别可疑,怀疑是通信方嵌入了数据到TTL,我们将这些TTL值提取了出来,你能看出什么端倪吗?

打开题目中的附件是这样的:

image
image

一开始没看出啥来,感觉像ASCII码,但是,有好多都大于127了,所以应该不是ASCII码。

后来队友跟我说,可以把每个TTL值二进制码的高两位(高两位比特的数在数据传输中不容易受影响)拿下来,每4个TTL值凑出一个字节的二进制数来。具体为啥想到这个,他跟我说是之前正好看过一篇讲这个的文章。等我找到文章在贴链接。

之后就是写脚本把想法实现了,这里用到了python。

代码语言:javascript
复制
with open('ttl.txt') as f:
    lines = f.readlines()
n_num = []
#分析出所有的数
for i in lines:
    if i!='\n':
        n_num.append(int(i.replace('TTL=','')))
#拿到每个TTL值的高位
rlt = ''
for i in range(0,len(lines)):
    tmp = bin(n_num[i])[2:]
    tmp = '0'*(8-len(tmp)) + tmp
    rlt += tmp[0:2]
#得到最终的结果并存到文件中
rlt2 = ''
for i in range(0,len(rlt),8):
    rlt2 += chr(int(rlt[i:i+8],2))
with open('fi.txt','w') as f:
    f.write(rlt2.rstrip())

得到的文件中全部都是可打印字符,以FFD8开头,FFD9结束。所以,是jpeg格式的图片无疑了。

image
image
image
image

之后把这些16进制字符粘贴到winhex里并保存为jpeg格式的图片,得到了一张30KB的残缺二维码。30KB,还残缺!!!一定是夹杂私货了,于是就搜了下FFD8和FFD9的数量,正好6对。

(用搜索的话只能定位,可以用替换搜索,这样可以计数)

接着就是把图片拆出来了,使用binwalk,会分出6张二维码图片,用PPT的插图和对齐的功能拼接一下,得到一个二维码。

(PPT拼图真好用) 本以为扫完码flag就出来了,没想到还有一层加密,带秘钥的,这里我们使用的autokey解密。 之前说的维吉尼亚,不好意思,最开始我们用的维吉尼亚是个错误的被flag包裹的字符串,后来用的和他相似的autokey通过的。感谢那位发现错误我的博主。 扫码后的结果。 key:AutomaticKey cipher:fftu{2028mb39927wn1f96o6e12z03j58002p} 使用autokey解开密文:(用了个在线的,可能会慢一点) http://www.practicalcryptography.com/ciphers/classical-era/autokey/ 得到这么个东西:flagabdfdeabee,数字和括号没处理,自己手动加上就过了。 flag{2028ab39927df1d96e6a12b03e58002e} 参加完这个比赛,感觉除了隐写能写点,其他的,真的是欠缺!尤其那个PWN和reverse,得好好努力了。或许我需要一个大师傅来带带我,求带啊!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TTL题的writeup
    • 题目描述
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档