git reset --hard 94067e4502a5134d912b6964de7f23a438b7f814
在历史提交中找到文件 :
├── Ksecret+007+11537.key
├── Ksecret+007+11537.private
├── Ksecret+007+26883.key
└── Ksecret+007+26883.private
在接下来的DNS服务器配置中会用到
分析代码逻辑可以得知 :
我们 POST 的 数据 , 会被当做 IP
服务器会将这个 IP 作为 DNS 服务器
然后请求某一个域名的A记录 , 并且这个服务器要支持 DNS SEC
如果服务器返回的结果经过了公钥的验证
然后将 flag 发送到这个域名指向的服务器的某一个端口 (TCP)
根据上述分析可以得到 , 目前需要解决这几个问题
- 如何得到将被解析的域名
- 如何搭建 DNS 服务器
- 如何配置 DNS SEC
- 如何得到端口来接收 flag
- 使用命令 :
nc -lu 53
即可得到目标服务器查询的域名为 :
otherside.earth.flux
- 在 Linux 下搭建 DNS 服务器可以参考以下文章 :
http://blog.csdn.net/colourzjs/article/details/44491479
http://www.linuxidc.com/Linux/2015-04/116350.htm
- 配置 DNS SEC
http://www.cnblogs.com/anpengapple/p/5879363.html
这里需要用到在 Git 仓库中发现的那两对公私钥
- 一旦配置成功 , 输入你的 DNS 服务器的地址 , 目标服务器就会连接要查询的域名的A记录的某一个端口
- 首先我们可以肯定的是请求肯定是目标服务器发出的 , 那么可以根据这个特点对流量进行过滤
PING dnsosecure.flatearth.fluxfingers.net (149.13.33.84) 56(84) bytes of data.
64 bytes from 149.13.33.84 (149.13.33.84): icmp_seq=1 ttl=128 time=272 ms
- 参考 tcp 的三次握手 , 由于我们并没有监听那个端口 , 那么 tcp 的三次握手就不会建立 , 并且我们会给源主机回复一个RSET包
http://www.jellythink.com/archives/705
然后执行 tcpdump
tcpdump -XX -s 0 'tcp[tcpflags] & tcp-ack != 0 and tcp[tcpflags] & tcp-rst != 0 and host 8.8.8.8'
可以看到端口是 1337
最后说一些在配置 DNS 服务器的时候遇到的坑
- 如果修改完成配置 , 发现并没有报错 , 但是这并不代表服务一定启动成功 , 需要查看日志确保没有报错
systemctl status bind9.service
配置文件 :
/var/cache/bind/db.otherside.earth.flux
$TTL 604800
$ORIGIN otherside.earth.flux.
@ IN SOA otherside.earth.flux. root.otherside.earth.flux. (
2006080401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns1
@ IN A 138.68.86.32
@ IN A 138.68.86.32
@ IN A 138.68.86.32
@ IN A 138.68.86.32
ns1 IN A 138.68.86.32
www IN A 138.68.86.32
$INCLUDE "/etc/bind/views/dnssec_keys/Kotherside.earth.flux.+007+11537.key"
$INCLUDE "/etc/bind/views/dnssec_keys/Kotherside.earth.flux.+007+26883.key"
/etc/bind/named.conf.local
// domain -> ip
zone "otherside.earth.flux" in {
type master;
auto-dnssec maintain;
update-policy local;
key-directory "/etc/bind/views/dnssec_keys";
file "/var/cache/bind/db.otherside.earth.flux";
};
include "/etc/bind/sec-trust-anchors.conf";
/etc/bind/sec-trust-anchors.conf
trusted-keys {
otherside.earth.flux. 256 3 7 "AwEAAeJd3Xyd8l3rWDx46UwPMyLOSVcbuwDgEvt2iEWTAghVbpw5M2YN 0GxUqa6vWI/RAhSynF4fxSvp1z3PnKBFle/Qxz7MzfPgH0spzriWsP8k qjs0Y9/xJU0tzZJ2TrIypdmEqpKtMbs3gRrrADz8pr/AdI7bjvX4r6Oh ty04lG8zyj1wwuWXi/oVfk1rTD9I2aq7SWK9REnueUFRsshMLQK5Vgpo Row0HmrE7Peg59lFFSi54rSJivb/4Tb0P8AtIlIUW0ZZOR9E/MsswWFZ Qw56A0Z5LJK4t8RmV5+vAhflNn/uTSEOpC08vUqkNQbOBXr1Ie/t57H6 ywvsKwEYo9s=";
otherside.earth.flux. 257 3 7 "AwEAAdth+HteT0kUim5+hOkyTpMU1FbNfxjn7otvpcA0ZSb/37Tr+WRJ l1nmzHkmrW+gJuzj5M+1QPEv41CujWe8EdGOyA3jM2KENj7NMdiNjh1G puzQa7YFxR4z5SG8+M5zvO5F3CTFWU5tZCTzkvk4Zbs5aJ3RZ6Zk1EBK xwoKz1CGCoedBM1VcKwJ2H+NT15m1cb/AfsSEljTyvruUUiJo84+MRPh luYtPrVKIwnHe6qxvhLSvpG0HFNNkBudy/TOf7C51zmdkpW+3hvbzp/I 79LEuXyYwXft4vpxKNv4zTGOoXNrBAxHcfmvAJsplIzSGcM84yRD+oWm Pu/WF+ESuPv9bmws0hZ2L2+dLpKZjDjb8ppxFS/zJFfWqqErRWssQo64 4lET6m2qET1g22YeB5iLAhVfAmTMZtxnhLqSHJ1EdQIwKm3RJfUsr+z+ Wxb9BZS/P2OSUsSzLOQ7hWjViCE45JMW0gGnMrvSeloAePtvYasfBjaT IDhW2knhKVr2ZoJ6I7pvZBrc/hLB2NGiFaN2otLwIX6InRTT8zrndDY8 uXwVsrBH/4UXy0CIf0PNwjqyFTALSx2DYGW1aU9y0wiZbX5h3msJGRO3 eiHP6QNv+bQJ3f1isMuaAFXT07gcfrAVYT72clU5Nep1Dp6hBfmkfnGT jhiPj16+cfJerrIP";
};
/etc/bind/views/dnssec_keys
# 这个目录下放置在 Git 仓库中找到的两对公私钥文件
├── Ksecret+007+11537.key
├── Ksecret+007+11537.private
├── Ksecret+007+26883.key
└── Ksecret+007+26883.private
# 记得改名
mv Ksecret+007+11537.key Kotherside.earth.flux.+007+11537.key
mv Ksecret+007+11537.private Kotherside.earth.flux.+007+11537.private
mv Ksecret+007+26883.key Kotherside.earth.flux.+007+26883.key
mv Ksecret+007+26883.private Kotherside.earth.flux.+007+26883.private