CTF入門實(shí)戰(zhàn):從零掌握Web安全、密碼學(xué)與逆向工程基礎(chǔ)
1. 從零開始的CTF初體驗(yàn)NewStarCTF 2023公開賽道Week1復(fù)盤如果你對(duì)網(wǎng)絡(luò)安全感興趣或者聽說(shuō)過(guò)CTFCapture The Flag比賽但總覺得它門檻太高、無(wú)從下手那么NewStarCTF的公開賽道可能就是為你量身定做的“新手村”。作為一個(gè)面向全球公開的入門級(jí)賽事它的第一周題目往往設(shè)計(jì)得非常友好旨在引導(dǎo)新手理解CTF的基本玩法和核心題型。我完整地跟進(jìn)了NewStarCTF 2023公開賽道的第一周賽題發(fā)現(xiàn)它確實(shí)是一個(gè)絕佳的起點(diǎn)不僅能幫你建立信心更能讓你在實(shí)戰(zhàn)中快速掌握那些聽起來(lái)高大上、實(shí)則非?;A(chǔ)的安全技能。這周題目覆蓋了Web安全、密碼學(xué)、逆向工程和雜項(xiàng)Misc等經(jīng)典方向每一道題都像是一個(gè)精心設(shè)計(jì)的教學(xué)關(guān)卡在解出flag那串代表勝利的字符串的過(guò)程中你會(huì)不知不覺地理解一個(gè)又一個(gè)安全概念。很多人覺得CTF是高手對(duì)決但實(shí)際上像NewStarCTF Week1這樣的題目更像是給你一張藏寶圖和一些基礎(chǔ)工具讓你自己去探索和解謎。關(guān)鍵在于轉(zhuǎn)變心態(tài)你不是在參加一場(chǎng)考試而是在玩一個(gè)解謎游戲。題目描述通常叫“題目附件”或“題目地址”就是你的游戲任務(wù)說(shuō)明而你需要運(yùn)用一些基礎(chǔ)的計(jì)算機(jī)知識(shí)和搜索能力來(lái)完成任務(wù)。接下來(lái)我將以NewStarCTF 2023公開賽道第一周的題目為藍(lán)本帶你完整復(fù)盤一遍解題思路。請(qǐng)注意我不會(huì)直接給出flag答案那會(huì)破壞你未來(lái)參賽的樂(lè)趣而是重點(diǎn)分享如何思考、使用什么工具以及常見的“坑”在哪里。掌握了這些你就能獨(dú)立面對(duì)大多數(shù)入門級(jí)CTF題目了。2. 環(huán)境準(zhǔn)備與基礎(chǔ)工具配置打造你的安全分析工作臺(tái)工欲善其事必先利其器。在開始解題之前一個(gè)順手的環(huán)境和一套基礎(chǔ)工具是必不可少的。對(duì)于CTF新手我強(qiáng)烈建議不要追求“全家桶”式的一鍵安裝而是從幾個(gè)核心工具開始理解它們各自的作用。2.1 核心分析平臺(tái)Linux子系統(tǒng)或虛擬機(jī)雖然部分Web題可以在瀏覽器中直接操作但絕大多數(shù)CTF題目尤其是涉及二進(jìn)制、流量分析或需要特殊工具時(shí)在Linux環(huán)境下操作會(huì)方便得多。對(duì)于Windows用戶最便捷的方案是啟用WSLWindows Subsystem for Linux。我推薦安裝Ubuntu發(fā)行版因?yàn)樗鐓^(qū)活躍遇到問(wèn)題容易找到解決方案。安裝好WSL后第一件事是更新軟件源并安裝一些基礎(chǔ)包sudo apt update sudo apt upgrade -y sudo apt install python3 python3-pip git curl wget vim net-tools這些工具構(gòu)成了最基礎(chǔ)的操作環(huán)境。接下來(lái)我們需要安裝針對(duì)不同題型的神器。2.2 全能瑞士軍刀Python及其關(guān)鍵庫(kù)Python是CTF中最常用的腳本語(yǔ)言無(wú)論是編寫簡(jiǎn)單的解碼腳本還是進(jìn)行復(fù)雜的網(wǎng)絡(luò)請(qǐng)求交互都離不開它。除了Python本身有幾個(gè)庫(kù)你必須熟悉requests 用于處理HTTP請(qǐng)求是解Web題的基礎(chǔ)。pwntools 這是一個(gè)神器尤其擅長(zhǎng)處理二進(jìn)制漏洞利用Pwn題目中的交互過(guò)程。對(duì)于新手即使不做Pwn題它也能幫你方便地連接題目服務(wù)器、發(fā)送和接收數(shù)據(jù)。Crypto庫(kù)或pycryptodome 用于密碼學(xué)題目的加解密操作。安裝它們非常簡(jiǎn)單pip3 install requests pwntools pycryptodome注意在不同系統(tǒng)上pip命令可能是pip3。如果安裝pwntools遇到困難可以嘗試先安裝一些系統(tǒng)依賴sudo apt install python3-dev libffi-dev build-essential。2.3 網(wǎng)絡(luò)流量偵察兵瀏覽器開發(fā)者工具與Burp SuiteWeb安全是CTF的重頭戲?,F(xiàn)代瀏覽器Chrome、Firefox自帶的開發(fā)者工具F12打開是你的第一道防線。你需要熟練使用以下幾個(gè)面板元素Elements 查看和修改網(wǎng)頁(yè)HTML、CSS常用于找隱藏信息或繞過(guò)前端驗(yàn)證。控制臺(tái)Console 執(zhí)行JavaScript代碼有時(shí)flag就藏在某個(gè)變量的值里。網(wǎng)絡(luò)Network 記錄所有HTTP請(qǐng)求和響應(yīng)。這是分析題目如何與后端交互的關(guān)鍵查看請(qǐng)求頭、參數(shù)、響應(yīng)內(nèi)容常常能發(fā)現(xiàn)突破口。當(dāng)你需要更強(qiáng)大的攔截、重放和修改請(qǐng)求的能力時(shí)就需要請(qǐng)出Burp Suite了。社區(qū)版對(duì)CTF來(lái)說(shuō)完全夠用。它的Proxy功能可以攔截瀏覽器流量Repeater功能可以讓你手動(dòng)修改并重發(fā)某個(gè)請(qǐng)求無(wú)數(shù)次這對(duì)于測(cè)試漏洞比如SQL注入、越權(quán)訪問(wèn)至關(guān)重要。配置Burp Suite的關(guān)鍵一步是讓瀏覽器信任它的CA證書這樣才能攔截HTTPS流量具體步驟在其官方文檔中有詳細(xì)說(shuō)明。2.4 文件與編碼分析利器CyberChef 和 010 Editor很多Misc題目會(huì)給你一個(gè)奇怪的文件或者一段看似亂碼的文本。CyberChef是一個(gè)“網(wǎng)絡(luò)版”的編碼解碼、加密解密、數(shù)據(jù)格式分析的神奇網(wǎng)站。它集成了上百種操作稱為“配方”你可以通過(guò)拖拽的方式組合它們來(lái)處理數(shù)據(jù)。比如你拿到一串ZmxhZ3t3ZWxjb21lfQ在CyberChef里拖入一個(gè)“From Base64”模塊立刻就能得到解碼結(jié)果flag{welcome}。它免去了你記憶各種命令的麻煩特別適合探索和嘗試。對(duì)于更底層的文件分析比如查看文件頭、修復(fù)損壞的文件結(jié)構(gòu)、分析二進(jìn)制數(shù)據(jù)010 Editor是一個(gè)強(qiáng)大的十六進(jìn)制編輯器。它支持用模板來(lái)解析特定格式的文件如PNG、ZIP能直觀地展示文件內(nèi)部結(jié)構(gòu)。在CTF中經(jīng)常有題目是把一個(gè)ZIP文件的后綴改成PNG或者在一個(gè)圖片文件末尾附加了另一個(gè)文件用010 Editor可以一目了然。準(zhǔn)備好這些工具你的“作戰(zhàn)平臺(tái)”就基本搭建完成了。下面我們進(jìn)入實(shí)戰(zhàn)看看在NewStarCTF Week1中如何運(yùn)用這些工具和思維來(lái)解題。3. Web入門題“ErrorFlask”深度剖析從報(bào)錯(cuò)信息到源碼泄露我們以網(wǎng)絡(luò)熱詞中提到的“errorflask”為線索這很可能對(duì)應(yīng)一道Web題目。假設(shè)題目名稱就是“ErrorFlask”描述是一個(gè)用Python Flask框架搭建的、似乎有很多錯(cuò)誤的網(wǎng)站。這類題目的常見考點(diǎn)是利用不安全的錯(cuò)誤處理機(jī)制獲取服務(wù)器敏感信息。3.1 初步偵察與信息收集拿到題目第一步永遠(yuǎn)是訪問(wèn)給定的URL。打開網(wǎng)站可能是一個(gè)很簡(jiǎn)單的頁(yè)面甚至可能就是一個(gè)顯示“Welcome”的頁(yè)面。此時(shí)不要只看表面要開始“試探”。查看網(wǎng)頁(yè)源碼 右鍵查看頁(yè)面源代碼。Flag有時(shí)會(huì)以HTML注釋的形式隱藏其中如!-- flag is not here, try /secret --。檢查Robots.txt 訪問(wèn)/robots.txt。這個(gè)文件有時(shí)會(huì)提示哪些目錄是禁止爬蟲的而這些禁止訪問(wèn)的目錄往往藏著好東西。目錄掃描 使用工具如dirsearch或gobuster進(jìn)行簡(jiǎn)單的目錄爆破。對(duì)于新手甚至可以手動(dòng)嘗試一些常見路徑如/admin,/flag,/secret,/source,/index.php,/admin.php,/backup等。# 使用 dirsearch 的簡(jiǎn)單示例 python3 dirsearch.py -u http://target-url -e php,html,js,txt,bak假設(shè)在試探過(guò)程中我們?cè)L問(wèn)了一個(gè)不存在的路徑比如http://target-url/nonexistent。這時(shí)題目設(shè)計(jì)的“考點(diǎn)”可能就出現(xiàn)了網(wǎng)站返回了一個(gè)詳細(xì)的Flask調(diào)試錯(cuò)誤頁(yè)面。3.2 理解Flask調(diào)試模式的風(fēng)險(xiǎn)Flask在開發(fā)時(shí)如果設(shè)置了debugTrue當(dāng)應(yīng)用出錯(cuò)時(shí)瀏覽器會(huì)展示一個(gè)交互式調(diào)試器頁(yè)面。這個(gè)頁(yè)面極其危險(xiǎn)因?yàn)樗粌H顯示了錯(cuò)誤的堆棧跟蹤還允許你在頁(yè)面上執(zhí)行Python代碼在真實(shí)的CTF題目中出題人通常不會(huì)直接開啟真正的調(diào)試模式那等于送分但可能會(huì)模擬或利用與之相關(guān)的特性。一個(gè)更常見的陷阱是不安全的錯(cuò)誤處理導(dǎo)致信息泄露。例如Flask應(yīng)用可能捕獲了異常但在返回錯(cuò)誤信息時(shí)不小心將內(nèi)部變量、配置信息甚至部分源碼打印了出來(lái)。我們的任務(wù)就是觸發(fā)各種錯(cuò)誤讓服務(wù)器“吐”出更多信息。3.3 構(gòu)造Payload觸發(fā)敏感信息泄露既然題目叫“ErrorFlask”我們可以系統(tǒng)地嘗試觸發(fā)不同類型的錯(cuò)誤路徑遍歷Path Traversal 嘗試訪問(wèn)/static/../../../etc/passwd。如果Flask的send_from_directory函數(shù)使用不當(dāng)可能造成目錄穿越讀取系統(tǒng)文件。模板注入SSTI測(cè)試 Flask使用Jinja2模板引擎。一個(gè)簡(jiǎn)單的測(cè)試是在所有可能的參數(shù)中嘗試{{7*7}}。如果輸入框、URL參數(shù)或Cookie值被直接傳入模板渲染且沒有經(jīng)過(guò)過(guò)濾那么服務(wù)器返回的頁(yè)面可能會(huì)顯示49這就證實(shí)了SSTI漏洞的存在。一旦確認(rèn)就可以構(gòu)造更復(fù)雜的Payload來(lái)讀取文件、執(zhí)行命令。例如獲取當(dāng)前目錄列表的Payload可能是{{config.__class__.__init__.__globals__[os].popen(ls).read()}}。參數(shù)類型錯(cuò)誤 如果某個(gè)接口期望一個(gè)整數(shù)你傳一個(gè)字符串或數(shù)組進(jìn)去看看錯(cuò)誤信息是否會(huì)暴露一些變量?jī)?nèi)容。嘗試訪問(wèn)源碼 常見的源碼備份文件有app.py.bak,www.zip,source.tar.gz?;蛘呷绻嬖赟STI可以直接嘗試讀取應(yīng)用主文件{{.__class__.__mro__[1].__subclasses__()[XXX].__init__.__globals__[__file__]}}需要找到包含open函數(shù)的類索引XXX。在實(shí)際的NewStarCTF題目中可能不需要這么復(fù)雜的SSTI。也許僅僅是通過(guò)一個(gè)特定的錯(cuò)誤參數(shù)就能讓頁(yè)面直接輸出包含flag的源碼。關(guān)鍵在于仔細(xì)閱讀每一行錯(cuò)誤信息。錯(cuò)誤信息里可能會(huì)包含發(fā)生錯(cuò)誤的文件名、行號(hào)、以及該行代碼的上下文。有時(shí)flag就以硬編碼的形式寫在那行被曝光的代碼里。3.4 實(shí)戰(zhàn)模擬與工具使用假設(shè)我們通過(guò)嘗試發(fā)現(xiàn)訪問(wèn)/debug路徑時(shí)頁(yè)面返回了一個(gè)包含代碼片段的錯(cuò)誤。這時(shí)使用Burp Suite的Repeater功能就非常方便。我們可以將請(qǐng)求發(fā)送到Repeater然后反復(fù)修改參數(shù)觀察響應(yīng)變化而無(wú)需在瀏覽器中來(lái)回刷新。對(duì)于拿到的疑似編碼過(guò)的flag比如Base64、Hex、ROT13等立刻打開CyberChef。把字符串丟進(jìn)去嘗試常見的解碼操作。一個(gè)非常經(jīng)典的套路是題目給你一個(gè)字符串你以為是Base64解出來(lái)卻是亂碼這時(shí)你可能需要先進(jìn)行Hex解碼或者解兩次Base64因?yàn)榭赡苁荁ase64 inside Base64。踩坑心得Flask類題目遇到錯(cuò)誤頁(yè)面先別急著關(guān)。把頁(yè)面源代碼完整復(fù)制下來(lái)保存到文本編輯器里仔細(xì)看。出題人經(jīng)常把關(guān)鍵信息放在錯(cuò)誤堆棧的最末尾或者夾雜在HTML注釋里滾動(dòng)條一拉到底才能發(fā)現(xiàn)。另外瀏覽器的“查看源代碼”和“檢查元素”看到的內(nèi)容是不同的“查看源代碼”是服務(wù)器最初返回的原始響應(yīng)而“檢查元素”顯示的是經(jīng)過(guò)JavaScript修改后的DOM。在CTF中通常前者更可靠。4. 密碼學(xué)簽到題“BabyRSA”解析理解公鑰加密的數(shù)學(xué)本質(zhì)第一周的密碼學(xué)題往往是“簽到題”旨在讓你理解最基礎(chǔ)的概念。假設(shè)有一道叫“BabyRSA”的題目附件可能給了你一個(gè)pub.key公鑰文件一個(gè)加密后的flag.enc文件以及一段提示文本。4.1 RSA加密原理速覽RSA的安全性基于大數(shù)分解的困難性。簡(jiǎn)單來(lái)說(shuō)選擇兩個(gè)大質(zhì)數(shù)p和q。計(jì)算n p * q。n就是模數(shù)會(huì)出現(xiàn)在公鑰和私鑰中。計(jì)算歐拉函數(shù)φ(n) (p-1)*(q-1)。選擇一個(gè)整數(shù)e滿足1 e φ(n)且e與φ(n)互質(zhì)。e就是公鑰指數(shù)通常是65537。計(jì)算d使得(d * e) % φ(n) 1。d就是私鑰指數(shù)。公鑰是(n, e)用于加密。私鑰是(n, d)用于解密。 加密過(guò)程密文c m^e mod nm是明文需要先轉(zhuǎn)換成整數(shù)。 解密過(guò)程明文m c^d mod n。題目給我們公鑰和密文我們的目標(biāo)就是破解私鑰或者直接解密。4.2 使用工具提取公鑰信息第一步從pub.key文件中提取n和e。我們可以使用強(qiáng)大的OpenSSL工具openssl rsa -pubin -in pub.key -text -modulus這個(gè)命令會(huì)以文本形式輸出公鑰詳情。你會(huì)看到Modulus就是n可能顯示為十六進(jìn)制和Exponent就是e通常是65537。把Modulus后面的十六進(jìn)制字符串復(fù)制下來(lái)它很長(zhǎng)是n的十六進(jìn)制表示。4.3 分解大數(shù)N獲取私鑰既然叫“BabyRSA”暗示這個(gè)RSA是不安全的很可能n比較小或者是由兩個(gè)非常接近的質(zhì)數(shù)相乘得到使得現(xiàn)代計(jì)算機(jī)可以在短時(shí)間內(nèi)分解它。我們需要將十六進(jìn)制的n轉(zhuǎn)換成十進(jìn)制整數(shù)。可以用Pythonn_hex C0332C5C64AE...你復(fù)制的字符串 # 注意去掉可能的‘Modulus’前綴和空格 n int(n_hex, 16) print(n)拿到十進(jìn)制的n后去訪問(wèn)一個(gè)名為FactorDB的網(wǎng)站。這是一個(gè)收集并分解了大量數(shù)字的數(shù)據(jù)庫(kù)。你把n提交上去如果運(yùn)氣好對(duì)于簽到題幾乎肯定好它會(huì)立刻返回p和q。如果FactorDB也分解不了對(duì)于稍難的題你可能需要使用本地工具如yafu或者嘗試一些已知的攻擊算法比如當(dāng)p和q非常接近時(shí)可以用費(fèi)馬分解法。但對(duì)于Week1的題目FactorDB通常足以解決問(wèn)題。4.4 計(jì)算私鑰并解密得到p和q后我們就可以計(jì)算私鑰了。編寫一個(gè)Python腳本完成剩余工作from Crypto.Util.number import long_to_bytes, inverse import gmpy2 # 處理大數(shù)運(yùn)算更高效 # 從FactorDB得到的結(jié)果 p 12345678901234567891 # 替換為實(shí)際的p q 98765432109876543219 # 替換為實(shí)際的q e 65537 n p * q # 讀取密文文件密文通常是二進(jìn)制或十六進(jìn)制形式 with open(flag.enc, rb) as f: c_bytes f.read() c int.from_bytes(c_bytes, big) # 將字節(jié)轉(zhuǎn)換為整數(shù) # 計(jì)算私鑰指數(shù) d phi (p-1) * (q-1) d inverse(e, phi) # 使用模逆元計(jì)算d等同于 gmpy2.invert(e, phi) # 解密 m pow(c, d, n) # 計(jì)算 m c^d mod n # 將解密后的整數(shù)轉(zhuǎn)換為字節(jié)再解碼為字符串 flag long_to_bytes(m).decode() print(flag)運(yùn)行這個(gè)腳本flag就應(yīng)該出現(xiàn)了。它很可能以flag{或NewStar{開頭。避坑指南這里最容易出錯(cuò)的地方是密文c的讀取和轉(zhuǎn)換。flag.enc文件可能是純二進(jìn)制格式也可能是十六進(jìn)制文本格式。如果是十六進(jìn)制文本比如用記事本打開能看到0-9, a-f的字符你需要先用bytes.fromhex()將其轉(zhuǎn)換為字節(jié)。另外pow(c, d, n)計(jì)算量很大如果n很大Python內(nèi)置的pow配合三個(gè)參數(shù)已經(jīng)做了優(yōu)化可以直接用。如果還是慢可以安裝gmpy2庫(kù)它的powmod函數(shù)更快。5. 逆向工程“HelloReverse”初探靜態(tài)分析與動(dòng)態(tài)調(diào)試的結(jié)合逆向工程題目通常會(huì)給你一個(gè)可執(zhí)行文件比如hello_reverse.exe或hello_reverse運(yùn)行后它可能會(huì)要求你輸入一個(gè)密碼正確則輸出flag。我們的任務(wù)就是分析這個(gè)程序找出正確的密碼或直接得到flag。5.1 第一步文件識(shí)別與靜態(tài)分析拿到文件不要急著運(yùn)行。先用file命令Linux或查殼工具如Detect It Easy識(shí)別文件類型。file hello_reverse如果是Linux的ELF文件或者Windows的PE文件并且沒有加殼保護(hù)我們就可以直接進(jìn)行靜態(tài)分析。靜態(tài)分析就是不運(yùn)行程序直接閱讀其代碼或反匯編代碼。最常用的靜態(tài)分析工具是IDA Pro商業(yè)軟件有免費(fèi)版或GhidraNSA開源功能強(qiáng)大。這里以Ghidra為例因?yàn)樗赓M(fèi)且對(duì)新手友好。將文件導(dǎo)入Ghidra后它會(huì)進(jìn)行反編譯。我們的目標(biāo)是找到程序的main函數(shù)。在Ghidra的符號(hào)查看器Symbol Tree里通??梢哉业絤ain。雙擊進(jìn)入右邊窗口就會(huì)顯示反編譯出來(lái)的C語(yǔ)言偽代碼。對(duì)于第一周的題目邏輯通常非常直白。5.2 分析關(guān)鍵邏輯與算法假設(shè)我們?cè)趍ain函數(shù)里看到類似這樣的偽代碼puts(Please input your flag:); fgets(user_input, 0x40, stdin); if (strlen(user_input) ! 0x20) { puts(Wrong length!); exit(0); } for (i 0; i 0x20; i i 1) { if ((user_input[i] ^ 0x55) ! secret_buffer[i]) { puts(Wrong!); exit(0); } } puts(Congratulations! Your flag is correct.);這段代碼的意思是提示輸入。檢查輸入長(zhǎng)度是否為320x20個(gè)字符。對(duì)輸入的每一個(gè)字符與0x55進(jìn)行異或XOR操作。將結(jié)果與程序內(nèi)部一個(gè)叫secret_buffer的數(shù)組進(jìn)行比較。全部相等則成功。那么secret_buffer里存的就是經(jīng)過(guò)變換的flag。我們的任務(wù)就是找到secret_buffer的內(nèi)容然后進(jìn)行逆運(yùn)算再次異或0x55得到原始輸入也就是flag。5.3 定位關(guān)鍵數(shù)據(jù)與編寫解密腳本在Ghidra的反匯編窗口或偽代碼窗口中點(diǎn)擊secret_buffer變量通??梢蕴D(zhuǎn)到它的定義位置那里會(huì)顯示一串十六進(jìn)制數(shù)值。把這些數(shù)值記下來(lái)。然后編寫一個(gè)簡(jiǎn)單的Python腳本進(jìn)行解密# secret_buffer 中的數(shù)據(jù)例如從Ghidra中看到{0x23, 0x34, 0x12, ...} secret_bytes [0x23, 0x34, 0x12, 0x67, 0x45, 0x23, 0x11, 0x66, 0x77, 0x88] # 替換為實(shí)際數(shù)據(jù) flag for b in secret_bytes: original_char chr(b ^ 0x55) # 異或運(yùn)算是可逆的A ^ B ^ B A flag original_char print(flag)運(yùn)行腳本就能得到flag。如果輸出有亂碼可能是長(zhǎng)度不對(duì)或者secret_buffer的地址找錯(cuò)了需要回去重新核對(duì)。5.4 動(dòng)態(tài)調(diào)試作為驗(yàn)證手段如果靜態(tài)分析遇到困難或者想驗(yàn)證自己的理解可以使用動(dòng)態(tài)調(diào)試器。Linux下常用gdbWindows下可以用x64dbg或OllyDbg。以gdb為例可以設(shè)置斷點(diǎn)在比較函數(shù)如strcmp處運(yùn)行程序并輸入一個(gè)測(cè)試密碼當(dāng)程序執(zhí)行到斷點(diǎn)時(shí)查看寄存器或內(nèi)存中正在比較的數(shù)據(jù)這能直觀地看到程序期望的字符串是什么。對(duì)于新手動(dòng)態(tài)調(diào)試的門檻略高。第一周的逆向題通過(guò)靜態(tài)分析反編譯的偽代碼基本都能解決。關(guān)鍵在于耐心閱讀代碼理解每一行在做什么把程序邏輯翻譯成你自己的解題步驟。經(jīng)驗(yàn)之談逆向題目經(jīng)常會(huì)把flag進(jìn)行一些簡(jiǎn)單的變換如異或、加減固定值、Base64編碼后與你的輸入進(jìn)行比較。在偽代碼里看到循環(huán)和算術(shù)/邏輯運(yùn)算就要敏感起來(lái)。另外字符串比較函數(shù)strcmp,memcmp是重要的突破口在Ghidra里搜索這些函數(shù)調(diào)用能快速定位到關(guān)鍵判斷邏輯附近。6. 雜項(xiàng)題“流量分析”與“文件隱寫”通解思路Misc題目五花八門但第一周的題目通常集中在流量分析PCAP文件和文件隱寫圖片、文檔兩大類。6.1 網(wǎng)絡(luò)流量分析PCAP入門題目給你一個(gè).pcap或.pcapng文件這是用Wireshark等工具捕獲的網(wǎng)絡(luò)數(shù)據(jù)包。你需要像偵探一樣從海量數(shù)據(jù)包中找出含有flag的通信。使用Wireshark打開 首先使用過(guò)濾器簡(jiǎn)化視圖。常見的過(guò)濾器有http 只看HTTP流量。tcp.port 80或tcp.port 443 看Web流量。ftp 看FTP流量。dns 看DNS查詢有時(shí)flag藏在子域名里。tcp contains “flag”或http contains “flag” 直接搜索包含“flag”關(guān)鍵詞的數(shù)據(jù)包。追蹤TCP流或HTTP流 這是最常用的功能。選中一個(gè)HTTP數(shù)據(jù)包右鍵 - “追蹤流” - “HTTP流”。Wireshark會(huì)把這個(gè)會(huì)話的所有請(qǐng)求和響應(yīng)重組在一起以明文顯示。Flag很可能就在某個(gè)請(qǐng)求的參數(shù)里或者某個(gè)響應(yīng)的內(nèi)容中可能是網(wǎng)頁(yè)源碼、文件下載。檢查文件傳輸 如果在流量里發(fā)現(xiàn)文件下載如圖片、壓縮包可以在Wireshark中將其導(dǎo)出。菜單欄文件 - 導(dǎo)出對(duì)象 - HTTP…會(huì)列出所有傳輸?shù)奈募x中可疑的保存即可。分析協(xié)議細(xì)節(jié) 有時(shí)flag不是明文傳輸?shù)?。比如它可能被編碼后放在HTTP請(qǐng)求頭的一個(gè)自定義字段里或者放在Cookie里。你需要仔細(xì)查看每個(gè)數(shù)據(jù)包的各個(gè)層級(jí)Frame, Ethernet, IP, TCP, HTTP。6.2 文件隱寫術(shù)Steganography基礎(chǔ)題目給一張普通的圖片比如challenge.png但flag就藏在里面。常見的手法有直接查看文件屬性與結(jié)尾 用cat命令或文本編輯器如VS Code打開圖片滾動(dòng)到最后。有時(shí)出題人直接把flag以文本形式追加在文件末尾。cat challenge.png | tail -c 100使用binwalk分析binwalk可以分析文件內(nèi)部是否嵌入了其他文件。binwalk challenge.png如果輸出顯示有Zip archive data或PNG image等說(shuō)明圖片里藏了別的文件??梢杂胋inwalk -e challenge.png來(lái)自動(dòng)提取。使用steghide 如果圖片是用steghide工具隱藏的信息且沒有密碼可以嘗試直接提取steghide extract -sf challenge.png它會(huì)提示輸入密碼如果沒密碼直接回車試試。有時(shí)密碼是空或者是一些簡(jiǎn)單單詞如“password”、“flag”。檢查L(zhǎng)SB隱寫 最低有效位LSB隱寫是將信息藏在圖片每個(gè)像素顏色值的最低位因?yàn)楦膭?dòng)最低位對(duì)人眼幾乎不可見??梢杂霉ぞ遺steg針對(duì)PNG/BMP或stegsolve來(lái)檢測(cè)和提取。zsteg challenge.png分離RGB通道 用stegsolve或Python的PIL庫(kù)可以分別查看圖片的紅、綠、藍(lán)通道有時(shí)flag只存在于某一個(gè)通道中。檢查Exif信息 圖片的元數(shù)據(jù)Exif里也可能藏信息。用exiftool命令查看。exiftool challenge.png解題技巧Misc題往往是一通百通。遇到一個(gè)文件先執(zhí)行一套“組合拳”file命令看類型strings命令找可讀字符串binwalk分析嵌入文件exiftool看元數(shù)據(jù)。對(duì)于圖片再用zsteg和steghide試試。這套流程能解決80%的入門級(jí)隱寫題。流量分析題則要牢記“追蹤流”和“導(dǎo)出對(duì)象”這兩個(gè)核心操作。7. 通用解題框架與賽后提升路徑通過(guò)上面幾個(gè)具體題型的拆解我們可以總結(jié)出一套適用于NewStarCTF乃至大多數(shù)入門CTF的通用解題框架審題與信息收集 仔細(xì)閱讀題目描述和附件名稱。描述里的每一個(gè)單詞都可能是提示。附件文件名如errorflask、babyrsa直接指明了考點(diǎn)。環(huán)境與工具準(zhǔn)備 根據(jù)題型快速啟動(dòng)對(duì)應(yīng)的工具瀏覽器/Burp for Web, Python for Crypto, Ghidra for Reverse, Wireshark for Misc。試探與觀察 對(duì)于Web訪問(wèn)所有可見鏈接嘗試修改參數(shù)對(duì)于Reverse運(yùn)行程序觀察行為對(duì)于Misc用基礎(chǔ)命令快速掃描文件。分析與假設(shè) 根據(jù)觀察到的現(xiàn)象如錯(cuò)誤信息、程序輸出、文件結(jié)構(gòu)結(jié)合題目名稱和類別形成一個(gè)關(guān)于“flag在哪里”或“如何得到flag”的假設(shè)。深入利用與工具輔助 針對(duì)假設(shè)進(jìn)行深入測(cè)試。如果是Web注入就系統(tǒng)化地構(gòu)造Payload如果是密碼學(xué)就分解n或嘗試已知攻擊如果是逆向就仔細(xì)閱讀反編譯代碼如果是流量就過(guò)濾和追蹤關(guān)鍵會(huì)話。獲取與驗(yàn)證 得到疑似flag的字符串后用題目要求的格式通常是flag{...}或NewStar{...}提交到平臺(tái)驗(yàn)證。完成第一周的比賽后如何有效提升系統(tǒng)學(xué)習(xí)基礎(chǔ)知識(shí) Web安全推薦《白帽子講Web安全》或PortSwigger的Web安全學(xué)院免費(fèi)密碼學(xué)可以看《圖解密碼技術(shù)》逆向推薦《逆向工程核心原理》。使用在線練習(xí)平臺(tái) 像CTFlearn、HackTheBox入門板塊、PicoCTF都是非常好的練習(xí)場(chǎng)題目按難度分類且有活躍的社區(qū)和Writeup題解。研究Writeup 做完題或者做不出來(lái)時(shí)一定要去看別人的Writeup。重點(diǎn)不是看答案而是學(xué)習(xí)別人的解題思路和工具使用方法。你會(huì)發(fā)現(xiàn)同一個(gè)題可能有多種解法。整理自己的知識(shí)庫(kù) 用一個(gè)筆記軟件如Obsidian、Notion記錄每道題的考點(diǎn)、解題步驟、用到的工具命令和腳本。積累多了就成了你的“武器庫(kù)”。參與團(tuán)隊(duì)與討論 加入一些CTF社群和別人交流。很多時(shí)候卡住你的只是一個(gè)沒想到的點(diǎn)子別人一句話就能點(diǎn)醒你。CTF的魅力在于這種“探索-學(xué)習(xí)-攻克”的循環(huán)。NewStarCTF 2023公開賽道的第一周就像一本精心編寫的入門教程它用較低的難度和清晰的指向帶你走完了這個(gè)循環(huán)的第一圈。當(dāng)你親手解出第一道非簽到題時(shí)那種成就感會(huì)驅(qū)動(dòng)你繼續(xù)向下一個(gè)難度進(jìn)發(fā)。記住所有專家都曾是新手關(guān)鍵就在于開始并堅(jiān)持下去。

相關(guān)新聞

華為P40激活鎖破解:從Bootloader到Fastboot的深度解鎖技術(shù)解析

華為P40激活鎖破解:從Bootloader到Fastboot的深度解鎖技術(shù)解析

1. 從“鎖”開始:理解華為P40的幾道安全防線如果你手頭有一臺(tái)華為P40,因?yàn)橥浟随i屏密碼、或者是從二手渠道購(gòu)入后發(fā)現(xiàn)被前機(jī)主的華為賬號(hào)鎖死,屏幕上那個(gè)“設(shè)備已鎖定”或“請(qǐng)輸入華為賬號(hào)密碼”的提示,無(wú)疑是一盆冷水。這不僅僅…

2026/8/3 0:27:48 閱讀更多
SSH私鑰權(quán)限錯(cuò)誤:從原理到修復(fù)的完整指南

SSH私鑰權(quán)限錯(cuò)誤:從原理到修復(fù)的完整指南

1. 問(wèn)題引入:一個(gè)看似簡(jiǎn)單卻困擾無(wú)數(shù)人的SSH連接攔路虎如果你在Mac或Linux系統(tǒng)上,嘗試使用SSH密鑰對(duì)連接遠(yuǎn)程服務(wù)器,卻突然在終端里看到一行刺眼的紅色錯(cuò)誤信息:“Permissions for ‘id_rsa‘ are too open. It is required that …

2026/8/3 0:27:48 閱讀更多
IDM激活腳本:5分鐘解除下載管理器30天限制的完整教程

IDM激活腳本:5分鐘解除下載管理器30天限制的完整教程

IDM激活腳本:5分鐘解除下載管理器30天限制的完整教程 【免費(fèi)下載鏈接】IDM-Activation-Script IDM Activation & Trail Reset Script 項(xiàng)目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script IDM激活腳本是一款專為Windows用戶設(shè)計(jì)的開源工…

2026/8/3 0:27:48 閱讀更多
行為樹與py_trees:從狀態(tài)機(jī)到模塊化AI決策的Python實(shí)踐

行為樹與py_trees:從狀態(tài)機(jī)到模塊化AI決策的Python實(shí)踐

1. 從狀態(tài)機(jī)到行為樹:為什么我們需要更優(yōu)雅的決策邏輯如果你做過(guò)游戲AI、機(jī)器人控制或者任何需要復(fù)雜決策邏輯的系統(tǒng),大概率都跟狀態(tài)機(jī)打過(guò)交道。狀態(tài)機(jī)(FSM)是個(gè)好東西,直觀、簡(jiǎn)單,畫幾個(gè)圈圈和箭頭就能把…

2026/8/3 1:17:53 閱讀更多
Pandas DataFrame.append()棄用:性能陷阱與高效數(shù)據(jù)合并方案詳解

Pandas DataFrame.append()棄用:性能陷阱與高效數(shù)據(jù)合并方案詳解

1. 問(wèn)題緣起:一個(gè)“過(guò)時(shí)”的錯(cuò)誤如何成為數(shù)據(jù)處理的攔路虎 如果你最近在升級(jí)了pandas版本后,運(yùn)行一段曾經(jīng)完美工作的數(shù)據(jù)處理腳本,突然遇到了 AttributeError: ‘DataFrame‘ object has no attribute ‘a(chǎn)ppend‘ 這個(gè)報(bào)錯(cuò),先別…

2026/8/3 1:17:53 閱讀更多
騰訊鵝蝦平臺(tái):零代碼構(gòu)建AI Agent,無(wú)縫集成QQ飛書釘釘

騰訊鵝蝦平臺(tái):零代碼構(gòu)建AI Agent,無(wú)縫集成QQ飛書釘釘

1. 項(xiàng)目概述:當(dāng)“養(yǎng)蝦”不再是技術(shù)活 最近,騰訊悄悄上線了一個(gè)叫「鵝蝦」的新玩意兒,在圈子里小火了一把。這名字乍一聽有點(diǎn)摸不著頭腦,但如果你最近關(guān)注過(guò)AI Agent(智能體)或者企業(yè)辦公自動(dòng)化,…

2026/8/3 1:17:53 閱讀更多
面對(duì)完全陌生的線上應(yīng)用,我靠這套“找日志“方法論,10 分鐘摸清家底

面對(duì)完全陌生的線上應(yīng)用,我靠這套“找日志“方法論,10 分鐘摸清家底

為什么"陌生應(yīng)用排障"這么讓人崩潰 我以前遇到一些項(xiàng)目,發(fā)現(xiàn)他們遇到對(duì)自己的應(yīng)用了解很少: 點(diǎn)開服務(wù)器一看,進(jìn)程名看不懂,目錄結(jié)構(gòu)亂七八糟,日志文件幾十個(gè),不知道該看哪個(gè)。 然后是亂。上來(lái)就 …

2026/8/3 1:17:53 閱讀更多
3分鐘免費(fèi)下載無(wú)損歌詞:163MusicLyrics終極指南

3分鐘免費(fèi)下載無(wú)損歌詞:163MusicLyrics終極指南

3分鐘免費(fèi)下載無(wú)損歌詞:163MusicLyrics終極指南 【免費(fèi)下載鏈接】163MusicLyrics 云音樂(lè)歌詞獲取處理工具【網(wǎng)易云、QQ音樂(lè)】 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 還在為找不到高質(zhì)量的LRC歌詞而煩惱嗎?163MusicLy…

2026/8/3 1:07:51 閱讀更多
全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請(qǐng)點(diǎn)擊: https://kaifayun.com 第一章:全球僅7家廠商通過(guò)ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級(jí)智能文檔處理的核心組件,專注于高精度OCR、語(yǔ)義結(jié)構(gòu)化提取與跨語(yǔ)言實(shí)體對(duì)齊。截至2024年第三季度,全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書,視頻號(hào)上,賺錢從來(lái)沒有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/2 0:04:00 閱讀更多
3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說(shuō)說(shuō) 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過(guò),那些年發(fā)過(guò)的QQ空間說(shuō)說(shuō),那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/2 2:52:49 閱讀更多