CTF從大一打到大三,主要是做pwn,偶爾做逆向和密碼學,現在看著層出不窮的套路題/模板題真的有些膩了,想問問CTF PWN選手都是如何轉型呢?

其實很想去挖洞,但是感覺CTF中的二進位和真實的漏洞挖掘+利用還是存在著斷層的。比如復現漏洞時,拿到一個PoC可以相對快速地寫出exp,漏洞利用的問題並不大,但是漏洞挖掘卻依然是未知,會有「究竟是怎麼發現這兒這個漏洞的」這種問題


相比起web,pwn選手從CTF走向實戰需要付出更多的努力。

舉個簡單的例子,如果把src作為web領域的真實戰場,那麼能解決主流web題目的選手,只要肯花時間,大概率能衝到src積分榜比較靠前的位置。或者這麼說,如果把市場上高價值的web漏洞exp交給web選手看,復現起來應該不費什麼力氣。但是pwn領域呢,要是把頂級實戰比賽pwn2own上的exp交給CTF選手,想必光是理解漏洞都要花上不少時間。

究其原因可以從兩方面簡單談談:

  1. 代碼量。想想一般CTF給出題目的文件大小,最大也不過幾十mb,而真實漏洞挖掘的場景呢,光是下載chrome的源碼可能都得花幾十分鐘。也就是說比賽題目和真實項目的代碼量往往差了幾個數量級。
  2. 方法論。pwn的模板題菜單題漏洞種類來來去去就那幾種,方法無非就是IDA簡單逆向套一下漏洞模式。而真實場景的漏洞可就複雜很多,常常就是涉及幾個模塊調用的。

所以要從CTF過渡到真實場景就可以從上面兩個方向入手,加強對代碼審計的練習(閱讀代碼的技巧),學習漏洞挖掘的方法論(fuzzing等)。這裡推薦 @泉哥 介紹的一個talk,演講者是我個人非常欣賞的男神級Project zero研究員Ned Williamson。英文好的建議看原視頻,或者直接看泉哥的解讀也可以,總結的非常到位。

泉哥:安全研究者的自我修養?

zhuanlan.zhihu.com圖標


我將你的問題拋到了我們十五派的教研組群里,老師們也都給出了建議,咱們十五派的部分學生也會遇到這個問題,我對此做個簡單的總結,希望對你能有所幫助:

  1. 你需要搞清楚自己的基礎知識掌握的如何了,例如:最起碼的,挖掘PDF漏洞是不是至少要對PDF文件格式有比較深入的了解,基礎知識不具備,直接想上手挖洞,這是斷層感的主要來源之一,大概佔一半以上;
  2. 漏洞挖掘與漏洞利用其實是兩個知識體系,漏洞挖掘主要更偏向於軟體測試,主要關注代碼覆蓋度、過程狀態與深度以及可重現性等技術問題,而且,針對不同的類型的業務場景(例如本地文件類型、文檔類型、網路通信類型等)都有不同的技術側重點,關於這些咱們十五派的最新版課程中有一些涉及,因此對此也算是感觸頗深;
  3. 相對比漏洞利用的棧溢出、堆溢出、以及繞過各種保護的技術手段例如堆噴射、ROP等,漏洞挖掘也是有很多獨立的技術是需要學習的,並且所涉及到的知識結構更傾向於軟體架構與調試異常等,當然,基本的漏洞利用基礎也是需要的。

總而言之,漏洞挖掘相對比漏洞利用,更多的其實是在干一件「找參數並調優參數」的活,你要挖掘漏洞的程序其實就是一個公式,他有自己的特點,而你在做漏洞挖掘的時候,其實就是在找這個公式中的各項參數,並且經過調整後,使得公式有更大的概率輸出你所想要的結果。

由此可見,高等數學、微積分、統計學啥的可能就要走上檯面了,而說實在的,漏洞利用的過程中是涉及不到這些基礎的。

發佈於 02-09繼續瀏覽內容知乎發現更大的世界打開Chrome繼續科銳逆向科銳逆向

謝邀@嘯上

謝邀。

如果已經是一個成熟的PWN選手,那麼逆向分析、shellcode代碼的編寫、常見跳板和越權的構建應該都不是問題了。

但是PWN本質上還是個比賽性質,主要考察大家分析定位並利用漏洞的能力,好的比賽裡面會將歷史上曾經真實出現過的漏洞改造後,更換成同類型的腦洞跳板供選手們體驗。

如果想更進一步,可以先分析研究廠商公開的安全升級,然後對比升級前後的文件,找到廠商修復代碼的位置並分析其用意,從而定位並嘗試寫出舊版本的shellcode。不過一般廠商對於安全升級不會讓你輕易地作比較並定位的,你得熟悉一些常用的挖掘工具,這裡就不幫你百度了。

然而在傳統的黑客文化里,能夠獨立發現一個未公開的漏洞,並寫出利用代碼,最後提出修復方案,這才是被傳統黑客圈敬重的行為。這時候,你的平時工作如果就是漏洞挖掘,那你必須熟悉各種fuzz手法和工具的使用,有時候還得自己寫複雜的fuzz腳本,甚至fuzz工具。就算這樣,也不是一份耕耘一份收穫,更不是按勞分配的事情。畢竟就算你很努力地尋找漏洞,還得目標廠商的開發人員不夠努力,以至於寫出漏洞代碼,你才能有機會找到,大家說是不。

所以還需要運氣,沒準一個不是做漏洞挖掘行當的小弟,平時寫個二次開發的程序,一不小心把SDK里的功能調崩了一個。如果這小弟知識結構到位,而且對漏洞敏感,再然後項目時間允許他當即開始展開漏洞方面的研究,OK,那就是緣分,施主與洞有緣,否則,施主與洞無緣,事情就這麼過去了,也是很常見的。


謝邀。

如果已經是一個成熟的PWN選手,那麼逆向分析、shellcode代碼的編寫、常見跳板和越權的構建應該都不是問題了。

但是PWN本質上還是個比賽性質,主要考察大家分析定位並利用漏洞的能力,好的比賽裡面會將歷史上曾經真實出現過的漏洞改造後,更換成同類型的腦洞跳板供選手們體驗。

如果想更進一步,可以先分析研究廠商公開的安全升級,然後對比升級前後的文件,找到廠商修復代碼的位置並分析其用意,從而定位並嘗試寫出舊版本的shellcode。不過一般廠商對於安全升級不會讓你輕易地作比較並定位的,你得熟悉一些常用的挖掘工具,這裡就不幫你百度了。

然而在傳統的黑客文化里,能夠獨立發現一個未公開的漏洞,並寫出利用代碼,最後提出修復方案,這才是被傳統黑客圈敬重的行為。這時候,你的平時工作如果就是漏洞挖掘,那你必須熟悉各種fuzz手法和工具的使用,有時候還得自己寫複雜的fuzz腳本,甚至fuzz工具。就算這樣,也不是一份耕耘一份收穫,更不是按勞分配的事情。畢竟就算你很努力地尋找漏洞,還得目標廠商的開發人員不夠努力,以至於寫出漏洞代碼,你才能有機會找到,大家說是不。

所以還需要運氣,沒準一個不是做漏洞挖掘行當的小弟,平時寫個二次開發的程序,一不小心把SDK里的功能調崩了一個。如果這小弟知識結構到位,而且對漏洞敏感,再然後項目時間允許他當即開始展開漏洞方面的研究,OK,那就是緣分,施主與洞有緣,否則,施主與洞無緣,事情就這麼過去了,也是很常見的。


長亭的研究員巨佬就不要裝弱了,隨便挖挖bounty就拿到手軟了,而我這種零產出菜雞隻能瑟瑟發抖


做等後續,目前也有這方面的煩惱,工作也不好找


謝邀,可我是個web手


推薦閱讀:
相关文章