git reset --hard 94067e4502a5134d912b6964de7f23a438b7f814
在歷史提交中找到文件 :
├── Ksecret+007+11537.key
├── Ksecret+007+11537.private
├── Ksecret+007+26883.key
└── Ksecret+007+26883.private
在接下來的DNS服務(wù)器配置中會用到
分析代碼邏輯可以得知 :
我們 POST 的 數(shù)據(jù) , 會被當(dāng)做 IP
服務(wù)器會將這個 IP 作為 DNS 服務(wù)器
然后請求某一個域名的A記錄 , 并且這個服務(wù)器要支持 DNS SEC
如果服務(wù)器返回的結(jié)果經(jīng)過了公鑰的驗證
然后將 flag 發(fā)送到這個域名指向的服務(wù)器的某一個端口 (TCP)
根據(jù)上述分析可以得到 , 目前需要解決這幾個問題
- 如何得到將被解析的域名
- 如何搭建 DNS 服務(wù)器
- 如何配置 DNS SEC
- 如何得到端口來接收 flag
- 使用命令 :
nc -lu 53
即可得到目標(biāo)服務(wù)器查詢的域名為 :
otherside.earth.flux
- 在 Linux 下搭建 DNS 服務(wù)器可以參考以下文章 :
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 倉庫中發(fā)現(xiàn)的那兩對公私鑰
- 一旦配置成功 , 輸入你的 DNS 服務(wù)器的地址 , 目標(biāo)服務(wù)器就會連接要查詢的域名的A記錄的某一個端口
- 首先我們可以肯定的是請求肯定是目標(biāo)服務(wù)器發(fā)出的 , 那么可以根據(jù)這個特點對流量進行過濾
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 的三次握手 , 由于我們并沒有監(jiān)聽那個端口 , 那么 tcp 的三次握手就不會建立 , 并且我們會給源主機回復(fù)一個RSET包
http://www.jellythink.com/archives/705
然后執(zhí)行 tcpdump
tcpdump -XX -s 0 'tcp[tcpflags] & tcp-ack != 0 and tcp[tcpflags] & tcp-rst != 0 and host 8.8.8.8'
可以看到端口是 1337
最后說一些在配置 DNS 服務(wù)器的時候遇到的坑
- 如果修改完成配置 , 發(fā)現(xiàn)并沒有報錯 , 但是這并不代表服務(wù)一定啟動成功 , 需要查看日志確保沒有報錯
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