标签:file 8.8 2021Bytectf 初赛 过滤 dns print frequently data
Someone wants to send secret information through a surreptitious channel. Could you intercept their communications?
dns隧道
过滤一下dns协议
发现有很多向8.8.8.8请求,然后域名前带有信息,于是过滤一下8.8.8.8
发现这里面有两种,一种是i和o开头的,推测是0和1,另外一种是字符串,
看到最后一个包这里的==,推测是64编码,就可以过滤一下之前所有带字符串的,然后拼接起来,解码。
base64解码
先过滤出来所有带有字符串的
过滤规则: dns contains bytedanec&& frame.len==84
然后导出,导出的话,需要借助tshark工具。
我们需要导出上述规则的
找一下这个字段,先导出全部,然后找一下这个Name
https://www.wireshark.org/docs/dfref/d/dns.html
字段名是从官网找到的,后来发现其实完全不用。。官网找太麻烦了
完全可以右键,然后点击选择过滤器应用,右边会显示出它的字段名称
过滤规则:
./tshark.exe -r frequently.pcap -Y “dns contains bytedanec&& dns.qry.name.len > 15 && ip.dst == 8.8.8.8” -T fields -e dns.id -e dns.qry.name
然后用python ,正则过滤出前面这一段字符,然后连接起来即可(ps:dns的transaction id,也就是过滤规则中的dns.id应该是唯一的,这里面存在重复的,导致刚开始连接起来的字符转换图片有问题,需要去重)
base64转图片工具网址:
https://tool.jisuapi.com/base642pic.html
(也可以用python的base库来解码)
代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:tangzicheng
import re
import base64
file = open('chongfu.txt','r').read().split('\n')
# print(file)
# 先去重
clean = []
for i in file:
if i not in clean:
clean.append(i)
# print(clean)
# 然后把数据部分拼接起来
res = ''
for i in clean:
data = re.findall(r'([^\s]*)\.bytedanec\.top',i)
res += data[0]
print(res)
# 输出图片
f = open('out1.png','wb')
data = base64.b64decode(res.encode())
f.write(data)
未去重的效果:
去重:
对这个图片进行了一定分析后发现没什么用
查询io
udp.length == 41 && dns contains byte
将内容导出
/tshark.exe -r frequently.pcap -Y “udp.length == 41 && dns contains byte” -T fields -e dns.id -e dns.qry.name
脚本编写
用来提取 i o ,转换成01,然后转换成ASCII
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Autor:tangzicheng
import re
from Crypto.Util import number
file = open('chongfu.txt','r').read().split('\n')
# print(file)
final = []
for i in file:
if i not in final:
final.append(i)
# print(final)
finalbin = ""
for i in final:
data = re.findall(r'.\.bytedanec\.top',i)
if len(data) != 0:
# print(data[0][0])
if data[0][0] == 'o':
finalbin += str(0)
else:
finalbin += str(1)
# print(finalbin)
print(number.long_to_bytes(int(finalbin,2)))
ByteCTF{_enJ0y&y0ur’
另辟蹊径
追踪udp流。
在序号为1的udp流中发现了隐藏的另一半flag
这个东西可能就是要看细心了,还有就是不放过任何一个细节。。。。。
se1f_wIth_m1sc_}
拼接起来得到最终flag
ByteCTF{_enJ0y&y0ur’se1f_wIth_m1sc_}
参考:W&M 白帽100安全攻防实验室 微信公众号
标签:file,8.8,2021Bytectf,初赛,过滤,dns,print,frequently,data 来源: https://blog.csdn.net/qq_43200143/article/details/120863280
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。