CTF入門記錄(1

climerecho發表於2021-10-16

 

(https://ctf-wiki.org)

00 基礎瞭解

CTF簡介 (wolai.com)

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類題目考察選手對密碼學相關知識的瞭解程度,諸如RSAAESDES等都是密碼學題目的常客。有些時候也會給出一個加密指令碼和密文,根據加密流程逆推出明文。

  • Misc

    Misc意為雜項,即不包含在以上分類的題目都會放到這個分類。題目會給出一個附件。選手下載該附件進行分析,最終得出flag 常見的題型有圖片隱寫、視訊隱寫、文件隱寫、流量分析、協議分析、遊戲、IoT相關等等。五花八門,種類繁多。

     

    題目型別ctfhub{c8fde6edc982a5a29d6ae461f1373fe6}

     

    BY-NC-SA協議

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 請求方法 | 菜鳥教程 (runoob.com)

根據 HTTP 標準,HTTP 請求可以使用多種請求方法。

HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD 方法。

HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

這次這道題學會了GET請求指定的頁面資訊,並返回實體主體。

示例域 (example.com)

關於curl命令的用法:

curl 的用法指南 - 阮一峰的網路日誌 (ruanyifeng.com)

本題學到curl -v

輸出通訊的整個過程,用於除錯。

curl 控制檯請求,引數帶中文,返回中文亂碼問題小結這篇講解了使用curl出中文亂碼的解決以及curl的本意。

題解頁面 請求方式 | CTFHub

題解:

curl -v -X CTFHUB http:.............
//後續視情況而定

我獲得的答案flag: ctfhub{e78226f7835380a09fb17d51}

 

01-2-1 302跳轉-題目

 

 

 

我的問題在於找不到這個介面,也就不知道它原本是php而不是html;其次是php向html的轉換就是302跳轉嗎?這方面的知識我實在不明白。

1015-解決一部分

好了解決了一部分:在已經開啟頁面控制器的情況下,訪問index.php,但是會發現跳轉到index.html,從下圖可以看出發生了這種變化,至於具體細節,上面的時間條是什麼,後續得了解一下edge的控制器。

 

 

1016-已解決。

解決方法,可以看到頁面上有Give me Flag的連結,點選後卻跳轉到No Flag here! (ctfhub.com)說明發生了302跳轉。

 

題解頁面 302跳轉 | CTFHub

本題考點:HTTP狀態碼

//-1-1 HTTP狀態碼 | 菜鳥教程 (runoob.com)概覽

當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回一個包含HTTP狀態碼的資訊頭(server header)用以響應瀏覽器的請求。

HTTP狀態碼的英文為HTTP Status Code。

下面是常見的HTTP狀態碼:

  • 200 - 請求成功

  • 301 - 資源(網頁等)被永久轉移到其它URL

  • 302- 臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有URI

  • 404 - 請求的資源(網頁等)不存在

  • 500 - 內部伺服器錯誤

 

//-2-2 特別地,關於302狀態碼;

http302跳轉的區別

當你用瀏覽器點選一個頁面連結的時候,隨即你看到了一個新的網頁展示在瀏覽器內,在這個過程中,瀏覽器其實是在不斷的接收伺服器端的應答(這個應答是伺服器端的狀態,所以返回碼叫狀態碼),從而來決策下一步來做什麼(儘管大部分情況下,你毫無感知的就開啟了你想要的頁面),這個應答即狀態碼(status code)

而狀態碼為301和302就表示重定向。

301表示這個網頁已經永久的由伺服器的A路徑下移動到路徑B下,

而302表示臨時移動到B路徑下,對應到Url地址也即http://baidu.com/file/A/1.htmlhttp://baidu.com/file/B/1.html,當瀏覽器訪問前面一個地址的時候,這個時候伺服器會告知瀏覽器,請到B路徑下獲取這個檔案,隨後瀏覽器重新發起網路請求,請求B路徑下的頁面,經過渲染,呈現給使用者,例如淘寶的例子,請求http://taobao.com,收到302,從而瀏覽器再次請求http://www.taobao.com獲得頁面內容。

//-3-3 顯性URL和隱性URL

301重定向,也叫“永久性轉移“,搜尋引擎在抓取新內容的同時也將舊的網址替換為重定向之後的網址。 302跳轉,”臨時跳轉“,搜尋引擎在抓取新的內容也將舊的網址替換為重定向之後的網址。 統稱為顯式跳轉

為什麼要有301重定向呢?

首先是網址規範化問題 http://www.test.com http://test.com http://www.test.com/index.html http://test.com/index.html 站長是沒辦法控制別的網站使用哪一個網址連向自己的主頁,所以應該在主機伺服器上,把所有可能成為主頁網址的URL,通過301重定向到選擇的主頁版本上。 另外是如果站長有諸多個域名: http://test.com http://test.net http://test.org http://test.com.cn http://test.cn 這些域名全部指向一個網站http://test.com 或者 註冊了一個很長的域名http://longtestnametest.com,也註冊了縮寫域名方便記住test.com,其中一個做域名,另一個就可以轉向到主域名。

使用301重定向,當網頁A用301重定向到網頁B時,搜尋引擎可以肯定網頁A永久的改變位置,或者說實際上不存在了,搜尋引擎就會把網頁B當作唯一有效目標。

很多時候其他網站會連結到 http://test.com http://www.test.com/index.html http://test.com/index.html 而不是希望的 http://www.test.com 如果使用301跳轉,把前三個URL轉到最後一個上,PR也就集中在網頁 http://www.test.com了。 PR : PageRank 網頁排名

本文下面是一些關於301和302的實現,這需要瀏覽器的分析工具:分析執行時效能入門 - Microsoft Edge Development | Microsoft Docs,到這裡疑問基本可以收束了。

上面301、302都是顯示跳轉,下面多瞭解一下隱式調轉。隱式跳轉的實際效果就比如:網址欄中還是 yinshi.weihaitong.xyz,而實際頁面就已經是百度的初始頁面了。這個到這裡回頭再深入瞭解。

解析頁面:No Flag here! (ctfhub.com)

題解分析:

可以發現用Give me Flag訪問,會自動跳轉到index.html,可知發生了302

img

題解1 直接用 curl 訪問 index.php 即可得到 flag

curl -v http://..........
即可;
親身實踐,-v可以,不加不行。

解法2(未作

可以掛上 BurpSuite 之後訪問 index.php

img

由於做題極其吃力,我去看了看菜鳥教程的HTTP教程

HTTP 簡介 | 菜鳥教程 (runoob.com)但是看完總感覺缺了點什麼,太理論了。不知道對實際有什麼指導。

於是我去搜了搜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 //這個就回頭再看好了

 

 

相關文章