- CTF快速上手:PicoCTF真題解析(Web篇)
- 李華峰
- 2522字
- 2024-04-22 11:58:31
1.3 PicoCTF實用指南
PicoCTF除了每年舉辦比賽,還提供了一個提供其歷年比賽真題的在線平臺。通過這個平臺,學習者可以在熟悉CTF比賽題目的同時,了解各種信息安全的知識點。圖1-1所示為PicoCTF網站首頁。

圖1-1 PicoCTF網站首頁
1.3.1 注冊PicoCTF
初次使用PicoCTF時,需要進行注冊。其注冊頁面如圖1-2所示。

圖1-2 PicoCTF注冊頁面
注冊成功之后,返回首頁就可以看到PicoCTF提供的多種功能,如圖1-3所示。

圖1-3 PicoCTF提供的多種功能
1.3.2 PicoCTF的題目分類
PicoCTF將所有題目分成了多個大類,這其實也是幾乎所有CTF比賽都會采用的方案。因為“術業有專攻”,一個人不可能同時精通所有的網絡安全知識體系,所以CTF比賽幾乎都以團隊形式參賽,由團隊成員分別解答自己擅長的題目。
目前PicoCTF已將歷年的所有題目進行了分類,如圖1-4所示。

圖1-4 PicoCTF的題目分類
由圖1-4可以發現,這些題目被分成了Web安全、加密、逆向工程、取證、通用技能和二進制滲透6種類型。
● Web安全:圖1-4中的Web Exploitation,指通過對Web應用程序進行分析和利用來獲取敏感信息或實施攻擊的過程。在Web安全的CTF比賽中,參賽者需要了解各種Web開發知識和漏洞。
● 加密:圖1-4中的Cryptography,指將信息轉換為不可讀形式的過程,以保護其機密性。在CTF比賽中,加密通常涉及解密隱藏的信息或破解密碼算法。在加密的CTF比賽中參賽者需要了解各種對稱加密和非對稱加密算法,如AES、RSA等。
● 逆向工程:圖1-4中的Reverse Engineering,指對軟件、硬件或其他基礎組件進行分析和解構,以了解其內部機制和功能的過程。在CTF比賽中,逆向工程涉及分析與修改二進制文件、反匯編和調試程序等任務。
● 取證:圖1-4中的Forensics,指通過收集、分析和保護數字證據來解決計算機犯罪案件的過程。在CTF比賽中,取證涉及分析給定的數據集,以找到隱藏的信息或解決給定的問題,參賽者需要了解數字取證的基本原理、取證工具和技術,如文件恢復、日志分析和內存取證。
● 通用技能:圖1-4中的General Skills,是PicoCTF為新手提供入門用的技巧教學題,包含各種CTF比賽中經常用到的技能,包括編程、網絡分析、操作系統知識和漏洞利用。這有點像其他CTF比賽中的Misc(雜項),但是PicoCTF中的此類題目普遍比較基礎。
● 二進制滲透:圖1-4中的Binary Exploitation,指對二進制程序進行分析和利用以獲取敏感信息或實施攻擊的過程,對應其他CTF比賽的PWN題目。在CTF比賽中,參賽者需要分析給定的二進制文件,理解其功能和漏洞,并開發相應的漏洞利用技術。
1.3.3 PicoCTF的題目
PicoCTF的練習界面十分友好,可以通過搜索框直接查找自己感興趣的題目。例如,要搜索與Java有關的題目,可以使用直接搜索關鍵詞“Java”,如圖1-5所示。

圖1-5 使用搜索框查找與Java相關的題目
PicoCTF練習界面的左下方按照賽事對題目進行了分類,如果答題者希望能夠像參加真實比賽一樣答完一整套題目,可以直接選擇對應的年份。目前PicoCTF提供的賽事歷年題目如圖1-6所示。

圖1-6 PicoCTF提供的賽事歷年題目
對于每一道題目,PicoCTF都給出了十分詳細的信息。下面以一道入門題目“Obedient Cat”為例介紹PicoCTF提供信息的方式。在題目列表中,該題的信息簡介如圖 1-7所示。

圖1-7 題目“Obedient Cat”的信息簡介
如圖1-7所示,這個頁面一共給出了5條信息,分別如下。
① 給出了題目的分類,如本題分類為通用技能(General Skills)。
② 給出了題目的分數,一般來說,分數越低,題目越簡單。但實際上并不完全如此,不同年份的題目的分數差距很大,答題者在解答不同年份的題目時將這個分數作為簡單參考即可。
③ 給出了題目的名稱。
④ 給出了已經解答出該題目的人數。
⑤ 給出了題目的好評度。
在圖1-7所示頁面中單擊題目的名稱,進入圖1-8所示的頁面。

圖1-8 題目“Obedient Cat”詳情頁面
在該頁面中給出了題目更詳細的信息。
● 作者(AUTHOR)。
● 題目描述(Description):題目的詳細介紹。
● 線索(Hints):題目的重要提示,同時也可能是網絡安全的一個知識點。
● 下載鏈接(Download flag):通常是一個下載鏈接,或者是一個網頁鏈接。
● 提交Flag(Submit Flag):在題目中找到的Flag可以在這里提交。
以“Obedient Cat”為例,這道題目提供了3條線索,這些線索其實也是PicoCTF的魅力所在。它們一方面給出了題目的提示,另一方面也幫助答題者更好地掌握網絡安全的知識點。
這道題的第1條線索給出了這樣的提示:“Any hints about entering a command into the Terminal (such as the next one), will start with a '$'... everything after the dollar sign will be typed (or copy and pasted) into your Terminal.”。
翻譯過來就是“提示中以$開頭的都是要執行的命令,這些內容都是應該在你的終端中輸入的”。
這道題的第2條線索給出了這樣的提示:“To get the file accessible in your shell, enter the following in the Terminal prompt: $ wget……”。
翻譯過來就是“如果想要在shell中訪問這個文件,請在終端的提示符中輸入以下內容”。
第3條線索是一條命令“$man cat”。
實際上這3條線索已經給出了題目的解題步驟,顯然這道題并非僅僅是測試,更多的是幫助參與者了解Linux答題環境及其常用命令,接下來只需要在Linux操作系統中完成上述操作。
1.3.4 PicoCTF的Linux答題環境
除了使用自己的Linux操作系統,如Kali Linux 2(推薦使用的CTF答題環境),PicoCTF也提供了一個網頁版的Linux答題環境供答題者選用。在答題頁面中,單擊右側的“Webshell”按鈕即可進入該Linux答題環境,如圖1-9所示。

圖1-9 答題頁面的右側的“Webshell”按鈕
使用網頁版Linux答題環境前,需要先輸入答題者在PicoCTF的用戶名和密碼。輸入正確的用戶名和密碼后的Linux答題環境,如圖1-10所示。

圖1-10 PicoCTF提供的Linux答題環境
接下來使用該環境來解答“Obedient Cat”這道題目。首先,在Linux答題環境下輸入第2條線索給出的命令,下載Flag文件,如圖1-11所示。

圖1-11 在Linux答題環境下下載Flag文件
然后,輸入第3條線索提供的命令“man cat”。此時系統將給出cat命令的詳細使用說明。其實這道題并不是在考試,而是在幫助答題者在實踐中掌握常用的Linux命令cat。
之后可以按“q”鍵退出cat的說明頁面。cat是Linux系統中的常用命令,主要用于對文件進行操作。例如,用cat命令顯示文件內容。
$ cat filename
上述命令將顯示指定文件(filename)的內容。
最后,在Linux答題環境下輸入下面的命令,查看剛剛下載的文件。
$ cat flag
成功得到這道題目的Flag,具體如下。
picoCTF{s4n1ty_v3r1f13d_2aa22101}
值得注意的是,PicoCTF比賽中大部分Flag是類似于picoCTF{*******}形式的字符串。
1.3.5 提交Flag
在獲得Flag之后,返回“Obedient Cat”題目的詳情頁面,將Flag的值添加到文本框中,如圖1-12所示。
單擊“Submit Flag”按鈕之后,就可以看到系統提示答題者獲得了對應的分數。在系統的題目列表中,已經完成的題目會變成灰色(見圖1-13)。
還有一點需要答題者注意的是,從PicoCTF 2022開始,大部分Web題目有了時間限制(見圖1-14),不過即使時間結束,答題者也可以答題,只是Web環境需要重啟。

圖1-12 提交Flag

圖1-13 完成的題目會變成灰色

圖1-14 時間限制
- Android應用安全實戰:Frida協議分析
- Securing Blockchain Networks like Ethereum and Hyperledger Fabric
- Learning Python for Forensics
- 大型互聯網企業安全架構
- 特種木馬防御與檢測技術研究
- CSO進階之路:從安全工程師到首席安全官
- 計算機病毒分析與防范大全(第3版)
- 安全技術運營:方法與實踐
- 網絡運維親歷記 (網絡運維紀實文學)
- 隱私計算:推進數據“可用不可見”的關鍵技術
- CTF快速上手:PicoCTF真題解析(Web篇)
- Mastering Metasploit
- 計算機系統與網絡安全研究
- Web安全之機器學習入門
- 數據安全實踐:能力體系、產品實現與解決方案