00 基礎瞭解
00-1 CTF題目型別
-
Web
大部分情況下和網、Web、HTTP等相關技能有關。
Web攻防的一些知識技巧。諸如SQL隱碼攻擊、XSS、程式碼執行、程式碼審計等等都是很常見的考點。
-
Pwn
Pwn類題目重點考察選手對於二進位制漏洞的挖掘和利用能力,其考點也通常在堆疊溢位、格式化漏洞、UAF、Double Free等常見二進位制漏洞上。
選手需要根據題目中給出的二進位制可執行檔案進行逆向分析,找出其中的漏洞並進行利用,編寫對應的漏洞攻擊指令碼(Exploit),進而對主辦方給出的遠端伺服器進行攻擊並獲取flag
通常來說Pwn類題目給出的遠端伺服器資訊為nc IP_ADDRESS PORT,例如nc 1.2.3.4 4567這種形式,表示在1.2.3.4這個IP的4567埠上執行了該題目
-
Reverse
Re類題目考察選手
逆向工程
能力。題目會給出一個可執行二進位制檔案,有些時候也可能是Android的APK安裝包。選手需要逆向給出的程式,分析其程式工作原理。最終根據程式行為等獲得flag -
Crypto
Crypto類題目考察選手對
密碼學
相關知識的瞭解程度,諸如RSA
、AES
、DES
等都是密碼學題目的常客。有些時候也會給出一個加密指令碼和密文,根據加密流程逆推出明文。 -
Misc
Misc意為雜項,即不包含在以上分類的題目都會放到這個分類。題目會給出一個附件。選手下載該附件進行分析,最終得出flag 常見的題型有圖片隱寫、視訊隱寫、文件隱寫、流量分析、協議分析、遊戲、IoT相關等等。五花八門,種類繁多。
題目型別ctfhub{c8fde6edc982a5a29d6ae461f1373fe6}
00-2競賽模式
ctfhub{c18732f48a96c40d40a06e74b1305706}
理論知識
理論題多見於國內比賽,通常為選擇題。包含單選及多選,
Jeopardy-解題
類似於 ACM 程式設計競賽、資訊學奧林匹克賽,根據總分和時間來進行排名。
一般會設定 一血(First Blood) 、 二血(Second Blood) 、 三血(Third Blood)
AwD-攻防模式
每個隊伍之間的GameBox配置及漏洞是完全一致
的,選手需要防護自己的GameBox不被攻擊的同時挖掘漏洞並攻擊對手服務來得分
RHG-自動化[ AI自動化]
利用人工智慧或是AI或是自動化攻擊程式來全自動的挖掘並利用漏洞,考驗選手對於漏洞理解
以及工程化
能力。
選手需要編寫自動化程式來請求介面獲取題目相關資訊,該類程式通常稱之為bot
,在程式中全自動
訪問並挖掘目標漏洞,完成利用漏洞攻擊並獲取flag的過程。獲取到的flag也由程式自動化提交。RHG因為是由bot全自動進行工作,所以比賽開始即可視為結束。
RW-真實世界
該賽制著重考察選手在面對真實的環境下的漏洞挖掘與利用能力。通常RW模式出題也會圍繞著能夠應用於真實滲透攻擊當中的漏洞
RW常見題型為VM/Docker逃逸、針對瀏覽器的攻擊、針對IoT/Car等裝置的攻擊,Web類攻擊等等
RW模式是以展示效果來作為題目是否完成的準則,所以在RW模式中並不存在Flag
。
KoH-搶佔山頭
選手面對的是一個黑盒的目標,需要先挖掘漏洞並利用漏洞控制目標。將自己的隊伍標識(隊伍名稱
或是Token
之類)寫入到指定檔案。隨後在該主機上進行加固等操作防止其他隊伍攻擊,主辦方會定期去檢查標識檔案,根據檔案中的隊伍標識來判定本回合分數給予哪個隊伍。
Mix[混合]
混合模式結合了以上多種模式,採取積分制裁定序列。
ctfhub{d452bfcf91e0a1f8e4a1b26a03c59c9c}
00-3 比賽形式
CTF比賽一般分為線上賽和線下賽。通常來說,線上賽多為初賽
, 線下賽多為決賽
, 但是也不排除直接進行
ctfhub{46ea72b1f8baa828b6fdab002a8ffdff}
01 Web前置技能
01-1 Http協議
01-1-1 請求方式-題目
題目如下:
題目考點是 HTTP Method
我就去搜了搜Http 請求方法是什麼。
根據 HTTP 標準,HTTP 請求可以使用多種請求方法。
HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
這次這道題學會了GET請求指定的頁面資訊,並返回實體主體。
關於curl命令的用法:
本題學到curl -v
輸出通訊的整個過程,用於除錯。
題解頁面
題解:
curl -v -X CTFHUB http:.............
//後續視情況而定
我獲得的答案flag: ctfhub{e78226f7835380a09fb17d51}
01-2-1 302跳轉-題目
我的問題在於找不到這個介面,也就不知道它原本是php而不是html;其次是php向html的轉換就是302跳轉嗎?這方面的知識我實在不明白。
1015-解決一部分
好了解決了一部分:在已經開啟頁面控制器的情況下,訪問index.php,但是會發現跳轉到index.html,從下圖可以看出發生了這種變化,至於具體細節,上面的時間條是什麼,後續得了解一下edge的控制器。
1016-已解決。
解決方法,可以看到頁面上有
題解頁面
本題考點:HTTP狀態碼
//-1-1
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回一個包含HTTP狀態碼的資訊頭(server header)用以響應瀏覽器的請求。
HTTP狀態碼的英文為HTTP Status Code。
下面是常見的HTTP狀態碼:
200 - 請求成功
301 - 資源(網頁等)被永久轉移到其它URL
302- 臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有URI
404 - 請求的資源(網頁等)不存在
500 - 內部伺服器錯誤
//-2-2 特別地,關於302狀態碼;
()
當你用瀏覽器點選一個頁面連結的時候,隨即你看到了一個新的網頁展示在瀏覽器內,在這個過程中,瀏覽器其實是在不斷的接收伺服器端的應答(這個應答是伺服器端的狀態,所以返回碼叫狀態碼),從而來決策下一步來做什麼(儘管大部分情況下,你毫無感知的就開啟了你想要的頁面),這個應答即狀態碼(status code)
而狀態碼為301和302就表示重定向。
301表示這個網頁已經永久的由伺服器的A路徑下移動到路徑B下,
而302表示臨時移動到B路徑下,對應到Url地址也即
//-3-3
301重定向,也叫“永久性轉移“,搜尋引擎在抓取新內容的同時也將舊的網址替換為重定向之後的網址。 302跳轉,”臨時跳轉“,搜尋引擎在抓取新的內容也將舊的網址替換為重定向之後的網址。 統稱為顯式跳轉
為什麼要有301重定向呢?
首先是網址規範化問題
使用301重定向,當網頁A用301重定向到網頁B時,搜尋引擎可以肯定網頁A永久的改變位置,或者說實際上不存在了,搜尋引擎就會把網頁B當作唯一有效目標。
很多時候其他網站會連結到
本文下面是一些關於301和302的實現,這需要瀏覽器的分析工具:
上面301、302都是顯示跳轉,下面多瞭解一下隱式調轉。隱式跳轉的實際效果就比如:網址欄中還是 yinshi.weihaitong.xyz,而實際頁面就已經是百度的初始頁面了。這個到這裡回頭再深入瞭解。
解析頁面:
題解分析:
可以發現用
題解1 直接用 curl 訪問 index.php 即可得到 flag
curl -v http://..........
即可;
親身實踐,-v可以,不加不行。
解法2(未作
可以掛上 BurpSuite 之後訪問 index.php
由於做題極其吃力,我去看了看菜鳥教程的HTTP教程
於是我去搜了搜http實戰
此外關於這道題還有一件事:302跳轉時怎麼被實現的?
搜了一下接結果出來
1 //php 如何實現302跳轉 2 <?php 3 4 $the_host = $_SERVER['HTTP_HOST']; 5 if($the_host == 'ieflex.com'){ 6 Header("HTTP/1.1 301 Moved Permanently"); 7 Header("Location: http://www.ieflex.com"); 8 exit; 9 } 10 ?> 11 //這個就回頭再看好了