2021Bytectf初赛misc-frequently

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编码,就可以过滤一下之前所有带字符串的,然后拼接起来,解码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TvvKhCPq-1634701797701)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/17adc024-d9e1-4f2a-8bb4-abb6e453d72f/Untitled.png)]

base64解码

先过滤出来所有带有字符串的

过滤规则: dns contains bytedanec&& dns.qry.name.len > 15 && ip.dst == 8.8.8.8

然后导出,导出的话,需要借助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&y0urse1f_wIth_m1sc_}

参考:W&M 白帽100安全攻防实验室 微信公众号

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值