HackingLab之基礎關攻略

2020-08-12 12:49:19

前言

作爲一無所知的小白,我僅僅是將此作爲摸魚時的一種解謎遊戲看待,因此不會事先去惡補過多的知識,遇到盲點也會果斷放棄,上網查攻略,畢竟樂趣作爲重要。

每一關的解法並不唯一,可以用抓包工具,也可以只用python,我的想法是能寫多少寫多少方法。題目什麼的我也懶得複製貼上了,畢竟沒有意義。

攻防平臺

闖關

第一關

講道理,看到題目就想到檢視原始碼。直接F12,答案寫在註釋裡。

jflsjklejflkdsjfklds

第二關

密文再加密一次又變回明文,既然全是小寫字母,就很容易想到與13位後的對應字母替換。查詢可知這種加密演算法叫做Rot13。

23ksdjfkfds

第三關

大致看一下密文,發現最後一位是特殊字元「=」,搜尋一下與等號有關的加密演算法,查到base64演算法。線上解密,最終可以得到key。

jkljdkl232jkljkdl2389

第四關

既然題目都說了MD5,何不一試?

bighp

第五關

小白沒什麼思路,搜尋鍵碼無果,於是看攻略。修改請求頭中的Accept-Language參數。
這意思就是根據語言判斷是否是外國人唄……
方法一:
直接修改瀏覽器的語言,把中文刪去。
方法二:
用python的request庫僞造請求頭的Accept-Language參數,然後存取網址,並列印響應內容。

import requests
url = "http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php"
headers = {'Accept-Language': 'q=0.5,en-US;q=0.3,en;q=0.2'}#僞造請求頭參數
r = requests.get(url,headers=headers)# 請求獲取URL位置的資源,包含從伺服器返回的所有內容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

(TU687jksf6&

第六關

搜尋引擎搜尋鍵碼,發現似乎與「User-Agent」這個屬性有關。F12到Network觀察請求頭,找到該屬性,後面參數可以明顯看出和瀏覽器相關,或許修改此處即可。
方法一(以Chrome爲準):
F12開啓開發者工具,點選右上方三個點,點選More Tools->Network conditions,直接修改User-Agent的值。
方法二:
用python的request庫僞造請求頭的User-Agent參數,然後存取網址,並列印響應內容。

import requests
url = "http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php"
headers = {'User-Agent':'HAHA'}
r = requests.get(url,headers=headers)
# 請求獲取URL位置的資源,包含從伺服器返回的所有內容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

meiyouHAHAliulanqi

第七關

沒什麼想法,看攻略說是藏在響應頭裏。
方法一:
F12到開發者工具檢視Network裡的響應頭,就看到答案了。
方法二:
用python的request庫申請資源,列印響應頭。

import requests
url = "http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php"
r = requests.get(url)
# 請求獲取URL位置的資源,包含從伺服器返回的所有內容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.headers)

kjh%#$#%FDjjj

第八關

將滑鼠放在超鏈接「到這裏找key_」上時,發現左下角顯示鏈接與點選鏈接後的網址不同,可知發生了重定向。
搜尋瀏覽器如何阻止重定向,方法無效。
搜尋python的request庫存取如何阻止重定向,找到解決方法,只需再get函數中新增屬性allow_redirects=False即可。注意申請的鏈接是超鏈接顯示的鏈接。

import requests
url = "http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/search_key.php"
r = requests.get(url,allow_redirects=False)
# 請求獲取URL位置的資源,包含從伺服器返回的所有內容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-hNsHCv4K-1597207129493)(./HackingLab之基礎關攻略/第八關.png)]
可以得到一個網址./key_is_here_now_.php

ohHTTP302dd

第九關

搜尋鍵碼,發現登錄資訊與cookie有關,並且發現測試網址使用了一個名爲「Login」的cookie。
F12到Network檢視請求頭,發現參數Cookie:Login=0,於是嘗試用python的request庫僞造請求頭的Cookie參數,使Login=1,然後存取網址,並列印響應內容,得到答案。

import requests
url = "http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php"
headers = {'Cookie':'Login=1'}
r = requests.get(url,headers=headers)
#r = requests.post(url,data={'v':'111111'})
# 請求獲取URL位置的資源,包含從伺服器返回的所有內容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

yescookieedit7823789KJ

第十關

發現只能輸入3位數位,而999依舊顯示太小。
F12檢視原始碼,發現標籤屬性中限制了輸入長度。
方法一
直接F12在開發者工具裡修改原始碼,使之能夠輸入一個極大的數,直接得出答案。
方法二
用python提交不受標籤限制

import requests
url = "http://lab1.xseclab.com/base10_0b4e4866096913ac9c3a2272dde27215/index.php"
r = requests.post(url,data={'v':'111111'})
# 請求獲取URL位置的資源,包含從伺服器返回的所有內容
r.encoding = r.apparent_encoding
r.encoding = 'utf-8'
print(r.text)

768HKyu678567&*&K

第十一關

題目崩了,答案就直接放在原始碼註釋裡了。

^&*(UIHKJjkadshf

第十二關

沒有思路,上網查攻略,發現與robots協定有關,雖然不知道是怎麼想到的……

robots協定也叫robots.txt(統一小寫)是一種存放於網站根目錄下的ASCII編碼的文字檔案,它通常告訴網路搜尋引擎的漫遊器(又稱網路蜘蛛),此網站中的哪些內容是不應被搜尋引擎的漫遊器獲取的,哪些是可以被漫遊器獲取的。

既然如此,就直接存取./robots.txt,看到Disallow: /9fb97531fe95594603aff7e794ab2f5f/
於是存取該網址,得到提示說此頁面不是登陸頁面,繼續搜尋。
一般來說登錄頁面就是在網址後面加/login.php,嘗試,成功看到答案。

UIJ%%IOOqweqwsdf

結語

至此,基礎十二關便結束了。
雖然總是在上網查攻略,但依舊樂趣不減,畢竟都是我沒接觸過的東西。
感覺學到了不少東西,作爲娛樂方式,還是很賺的。
以後可能補上抓包工具的解法。

有興趣可以逛一逛我的個人部落格