1. 程式人生 > >BugkuCTF: web3 ; 域名解析

BugkuCTF: web3 ; 域名解析

web3

開啟題目檢視原始碼:下面的註釋部分給出flag:

str = "KEY{J2sa42ahJK-HS11III&#125"

str2 = ""
dict = []
str3 = ""

str2 += str.replace( '&#', '' )
dict = str2.split(';')
for elem in dict:
    str3 += chr(int(elem))

print(str3)

指令碼提取字串中的數字後轉化為char型別得出flag

域名解析

域名解析是部署在世界各地的DNS伺服器乾的事(域名到IP地址的轉換)

但是本地機的host檔案:

Hosts是一個沒有副檔名的系統檔案,其作用就是將一些常用的網址域名與其對應的IP地址建立一個關聯“資料庫”,當用戶在瀏覽器中輸入一個需要登入的網址時,系統會首先自動從Hosts檔案中尋找對應的IP地址,如果沒有找到,系統會再將網址提交DNS伺服器進行IP地址的解析。
但是,Hosts檔案配置的對映是靜態的,如果網路上的計算機更改了IP地址,會造成不能訪問的錯誤。

hosts檔案位置:

  Linux下:

/etc/hosts        

windows下: 

C:\Windows\System32\drivers\etc

                       

 

                                   

所以找到hosts檔案,最後一行加入:

                                        123.206.87.240 flag.baidu.com

訪問        http://flag.baidu.com/

得到:    KEY{DSAHDSJ82HDS2211}

也可以修改頭資訊:用burpsuit抓包修改host頭資訊為flag.bugku.com

 

補充

http協議中Host頭的作用:

linux   curl 命令:

curl [option] [url]

常用選項:

-A/--user-agent <string>            設定使用者代理髮送給伺服器
-b/--cookie <name=string/file>      cookie字串或檔案讀取位置
-c/--cookie-jar <file>              操作結束後把cookie寫入到這個檔案中
-C/--continue-at <offset>           斷點續轉
-d/--data/--data-ascii <data>       指定POST的內容
-D/--dump-header <file>             把header資訊寫入到該檔案中
-e/--referer                        來源網址
-f/--fail                           連線失敗時不顯示http錯誤
-o/--output                         把輸出寫到該檔案中
-O/--remote-name                    把輸出寫到該檔案中,保留遠端檔案的檔名
-r/--range <range>                  檢索來自HTTP/1.1或FTP伺服器位元組範圍
-s/--silent                         靜音模式。不輸出任何東西
-T/--upload-file <file>             上傳檔案
-u/--user <user[:password]>         設定伺服器的使用者和密碼
-w/--write-out [format]             什麼輸出完成後
-x/--proxy <host[:port]>            在給定的埠上使用HTTP代理
-#/--progress-bar                   進度條顯示當前的傳送狀態
-v/--verbose                        用於列印更多資訊,操作失敗時看到警告資訊
-H/--header <header>                指定請求頭引數
--retry <num>                       指定重試次數
-I/--head                           僅返回頭部資訊,使用HEAD請求
-e/--referer <URL>                  指定引用地址

使用:

curl -I "XXX" -H "host: 域名" -v

它與不指定host有時訪問的並不是同一個ip,同一個url根據不同的Host將同一個請求定向到不同主機(host),從而達到負載均衡的效果。