跟隨學校的大牛參加了一次網路安全競賽。覺得有一些收穫,記錄一下。
這次競賽是我們省首次舉辦此模擬賽,參賽隊伍還是蠻多的,足足有60支。我們也是第一次參加這種比賽,都是兩眼一摸黑,大約知道是類似於ctf的形式。
雖然沒有底,但是有羅老師的參加,我們還是很有信心。在去參加比賽之前,羅老師給我們做了簡單介紹,了解了網路攻擊的一些步驟方法。最後決定,雖然攻擊不一定行,但是準備要充分。就把學校剛到的一批電腦從機房拆了3臺下來,作為參賽用機。這3臺都是酷睿i7第八代處理器,運算能力沒得說,開虛擬機器執行問題也不大,唯一的缺點,可能就是逼格不高,別的組都是筆記本,唯獨我們整個台式電腦。顯得太low。
出發那天,我們每人一台顯示器,一套鍵鼠,在酒店前台登記時就吸引了不少目光,其他選手都覺得我們太專業了。我們也只好解釋,沒找到好配置的筆記本,只能這樣了。
晚上,市領導組織開會,強調了下紀律,說明了一下賽程和比賽場地,第二天選手報道和賽前培訓,第三天個人賽,第四天才是我們參加的團隊賽。也好,趁著這些時間,還可以臨陣磨槍,搞一下突擊。
第二天下午趕到培訓地點,已經擠滿了人,根本沒有位置了,只能站著聽。組委會先簡單講了一下比賽的規定,在提問環節,羅老師還問了一下,是怎麼分辨靶機和選手機的。當時的講解老師回答說,靶機是在網段的指定ip上,比如你所在網段的100、200。(這個回答和我們後面比賽的情況完全不同,對我們誤導嚴重。)後面上來另乙個解說老師,演示了兩個簡單的攻擊例項,然後就讓團隊賽選手退出會場,單獨培訓個人賽選手了。
回到賓館,羅老師還找了乙個**給我們練手。最終分析了大賽和我們的情況後,覺得我和謝老師也幹不了其他高階的手段,主要熟悉一下工具,給我們準備一些指令碼。簡單分工後,謝老師就主要準備**方面,我把目標放在系統爆破上,準備了乙個爆破ssh的指令碼。為了充分發揮電腦的效能優勢,我直接把電腦裝成了kali linux (這中間還出了個麻煩事,不論是用軟碟通還是win32diskimager寫入映象都會報無法讀取光碟檔案的錯,直到羅老師用dd命令寫入才解決。)
正式比賽前半小時,推送了乙個位址,按照座位號登陸,核對資訊。桌面上還有乙份配置單,主要是要求確認網路是否通暢,檢查完畢後沒有問題就簽字。開始比賽後,推送了兩個ip位址,跟我們自己的電腦完全不在同一網段,有很多選手由於之前老師的錯誤解答,還在嘗試登陸100、200那兩個位址,直到賽場人員提示,才明白過來。
前乙個小時就用來做防護,不准攻擊其他人的靶機。 這期間我就沒什麼可做的了,羅老師全身心地加固,也讓我不要去打擾他。 百無聊賴中我發現乙個ip位址的**首頁原始碼裡有著ctfflag的關鍵字,還做了隱藏,我當時以為這就是乙個flag值了(完全忘了主辦方說的,所有的key值都在根目錄下的乙個檔案裡),有點激動的趕緊記下位置,想著一會兒好去找別人的。
乙個小時很快就過去了。 這時才發現,如果要攻擊別人,最起碼得有乙個掃瞄網路的工具。 只好看向羅老師,還好他有,於是我就要來位址,找到剛才同樣的位置,一番激動提交後,發現並不是,空歡喜一場。 這個時候,賽場的大螢幕上已經顯示有人發起攻擊成功了。
交代一下團隊賽的大概情況: 每個隊分配有兩個ip,訪問一看,是兩個**,乙個用php寫的,乙個用的flask搭的。 要求選手對這兩台靶機都要做好防護。 每隊分得的都是同樣的**,還分配了訪問的ssh賬號和密碼,要求選手在防護階段就要更改預設密碼。 分得的ip都是101.101段的。
發現自己空歡喜一場後,只得老實執行事先準備好的爆破ssh賬號的指令碼,我將推送的密碼也加到了密碼字典中,開始執行指令碼。 只要從羅老師那裡拿到乙個ip,我就執行乙個,一會兒介面上就全是跳動的字元了。 那邊謝老師就開始尋找sql注入漏洞,臨到中午快吃飯的時候,終於找到乙個,趕緊登入後台,上傳乙個羅老師寫好的指令碼,順利拿到flag值。 發現這條路行得通,趕緊讓他把指令碼也拷給我乙份。 於是我開始執行兩種指令碼,但我和謝老師都得等羅老師掃出ip後,才能做下一步。 我乾脆趁這個間隙出去吃飯,反正也是幹等著跑字典。
比賽時間為五個小時,期間大賽組委會準備了盒飯,參賽隊可以輪流出去用餐。 由於拿到了乙個flag,我變得有信心了些,吃飯的時候就在想還有沒有其他方法可以拿到別人的靶機ip,忽然就想起邊上沒有來人的那兩組,既然他們沒有來,那麼系統肯定沒有做防護,我只需要拿到他們的伺服器位址就好。 而參賽賬號又是根據座位號而來,我只需要看一下他們的桌號就可以了。 想到這我趕緊扒完飯,立馬返回賽場,先將自己的ip設定為未到場那一隊的,然後訪問大賽位址,發現根本沒有辦法連通,這個辦法看來行不通。
每隔20分鐘,賽委會會重新整理一次flag值,如果沒有修復好,每隔20分鐘就會被再次攻擊,於是謝老師守住剛才找到的漏洞,到點就再來一次。 就這麼得了兩次分,後面就被對方加固了,只得換下乙個目標。 我這邊一直爆破不了,估計是我的字典太簡單了點,但羅老師和謝老師先後找到兩台靶機漏洞,一次提交的時候發現被人搶先了(直到這時,我們才發現乙個flag只能提交一次),另外有三次成功了。 一共得到50分的進攻分,所幸我們的系統都沒有被攻擊,一直沒有掉分。
開賽三小時後,組委會推送了幾個公共區域,只要是參賽組成員,都可以訪問,從介面上看,應該是乙個phpmyadmin的登陸入口,有使用者名稱和密碼兩個輸入框。 羅老師提醒我,趕緊用brutesuite爆破一下,這確實是乙個辦法,我趕緊操作起來。 同時,也沒有放棄爆破其他的靶機,甚至將公共區域也作為ssh爆破的物件,繼續執行指令碼。
直到比賽結束,我也沒能爆破出乙個使用者密碼,可能還是手裡的字典太少太簡單了。 期間我們的靶機被攻擊了一次,扣掉10分。 還好是在將要結束時出現這種情況,否則可能會失去更多分數。
最終我們只拿到第13名,而現場坐在我們旁邊的「黔西南隊」成為了第一防守隊。 我們緊隨其後,為第二防守隊。 這也符合我們的職業特點,平日裡教學生,更多的都是如何做好安全防護,幾乎不去考慮攻擊別人。
而拿到頭等獎的貴州電信,也算實至名歸,如果他們都拿不到冠軍,可能在平時的網路使用中,更沒有隱私可言了。 讓人覺得有點惋惜的要屬「貴州大學隊」,他們在比賽的後半程持續發力,不斷刷屏,在大部分參賽隊都放棄的情況下,依然有辦法成功發動攻擊,手段十分豐富。 可惜防護做得太差,前期失分較多,後期沒能填滿。
至於我們,頭一次參賽,雖然沒有拿獎,但成績不算太難看,尤其防守做得到位,對得起我們「金湯隊」的名字。 更重要的是開闊了眼界,接觸到了行業內的一些高手,認清了自己的位置,同時,也發現了一些網路安全上的學習方向。 這些將更好地指導我們往後的教學。
如果下一次再有此種型別的比賽,定然不會如此次般兩眼一抹黑。 至少會準備一些網路掃瞄的工具,多準備一些進攻手段。 三個人之間的配合將會更有默契,分工更加明確,流程會更清晰。
期待下次能有更好的成績,也期望能夠多參加這模擬賽。 畢竟,我即將進入這個行業的「老人」佇列了,還沒有什麼能拿得出手的東西呢!
記一次除錯
這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...
記一次 EqualsAndHashCode的疑惑
lombok的使用真的是讓開發人員欲罷不能,乙個 data不管有多少屬性全部搞定,以後加字段也不用從新生成get和set方法。不過這裡還是有乙個小坑需要注意一下,舉個例子 public class equalsandhashcodetest data noargsconstructor access...
記一次除錯
這是我最近幾個月來遇到的最棘手的乙個問題 昨天花了4個小時找出第一層次的原因 這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是乙個gradle的plugin,用來resolve公司內部的dependency的,弄完了跑測試專案的,拋乙個npe,而且npe還不在自己的 裡面。...