某手秋招安全工程師面試

死不悔改奇男子發表於2024-06-21

一、自我介紹

自我介紹這塊就根據每個人的情況介紹就好。一般來說,就是我叫xxx,是來自xxx學校xxx專業的本科生/研究生,再介紹下自己的校園經歷,獲得的一些獎項,如果是研究生,還可以介紹一下自己研究生生涯的科研經歷等等。

二、有沒有挖洞經歷

有,但是暫時沒挖到。
面試官接著問:看你簡歷上打CTF比較多是吧,那你是負責哪一塊的呢?
回答:我是負責web和misc的,web方面就是做些RCE,反序列化,程式碼審計,檔案上傳,sql注入之類的題目。misc方面就是做些影像隱寫,音訊隱寫,水印之類的題目。
面試官接著問:那你有打過什麼比較大型的CTF比賽嗎?
回答:NepCTF、第一屆“華為杯”研究生創新大賽、SUCTF、XCTF

三、介紹下sql注入,從原理、分類、防禦等幾個方面介紹一下。

原理:透過某種方式將惡意的SQL程式碼新增到輸入引數中,然後傳遞到SQL伺服器使其解析並執行的一種攻擊手法。
常見的注入方式:聯合查詢注入、報錯注入、布林盲注、時間盲注、寬位元組注入、堆疊注入、二次注入。
寬位元組注入是由於編碼方式不同所導致的,頁面採用utf-8編碼,而資料庫採用GBK編碼就會造成寬位元組注入。
報錯注入是由於頁面有報錯資訊的顯示,所以可以利用一些報錯函式將想要的資訊透過報錯資訊得到。常用的報錯函式有updatexml、extractvalue、floor結合rand、exp(當輸入的值大於709的時候會報錯)等等。
盲注分為布林盲注、時間盲注。布林盲注可以在頁面不顯示資料,只顯示對錯的情況下使用,根據我們輸入的語句讓頁面呈現true還是false狀態來判斷語句是否成功。常用的函式有ascii、substr、length、concat、exists等。時間盲注是透過頁面返回時間的長短來判斷語句的成功與否。常用的函式有sleep、if、其餘的跟布林盲注差不多。
防禦:

- 預編譯,如使用引數化語句和繫結變數- 加強對使用者輸入的驗證,識別惡意內容,過濾掉某些危險語句- 轉義,把使用者的輸入當成文字以及用斜槓來轉義- 將資料庫異常資訊隱藏- 防火牆、黑名單,禁止某些IP訪問- 對資料庫資訊進行加密- 禁用某些引數,比如secure_file_priv等- 普通使用者和系統管理員使用者的許可權要有嚴格的區分

繞過:

1. 過濾關鍵字    - 用/**/、分割關鍵字    - 雙寫繞過    - 大小寫繞過    - 編碼繞過2. 過濾逗號    - 簡單注入使用join方法繞過    - 對於substr、mid函式可以使用from...for的方法解決,例如substr(str from pos for len);對於limit函式可以用offset的方法繞過。3. 過濾空格    - /**/    - 用括號繞過    - 用回車代替4. 過濾等號    - 用like、rlike、regexp這些模糊匹配函式5. 過濾函式    - 用等價函式繞過,例如:hex、bin、ascii三個函式可以相互替換。

然後面試官就叫我進行手工注入,那手工注入的語句我就不一一寫了,相信會的人都會寫。

四、XSS的原理,分類,危害,防禦等等

XSS是跨站指令碼攻擊,通常指攻擊者在網頁中嵌入惡意程式碼,使用者訪問網頁或點選連結觸發惡意程式碼而被攻擊。
分類:

1. 反射型XSS:非持久型XSS,最容易出現的XSS漏洞    原理:使用者在請求某個url地址時,會攜帶一部分資料,攻擊者可以將惡意程式碼注入到url中,如果伺服器未對url攜帶的引數做判斷或過濾直接返回響應頁面,就會觸發反射型XSS。    特點:非持久型、js程式碼在web應用的引數當中    資料流量走向:瀏覽器->後端->瀏覽器2. 儲存型XSS:持久型XSS,最危險的一種XSS    原理:惡意程式碼被儲存到伺服器上,顯示在HTML頁面中,經常出現在使用者評論的頁面,攻擊者將XSS程式碼儲存到資料庫中,當使用者在此訪問這個頁面時,就會觸發並執行XSS程式碼,竊取使用者的敏感資訊。    特點:持久型、危害性最大、js程式碼不在某個引數中,而是儲存在資料庫或者檔案中    資料流量走向:瀏覽器->後端->資料庫->後端->瀏覽器3. Dom型XSS    原理:基於文件物件模型(DOM)的一種漏洞。這種XSS與反射型XSS、儲存型XSS有著本質的區別,它的攻擊程式碼不需要伺服器解析響應,觸發XSS依靠瀏覽器端的DOM解    析,客戶端的JavaScript指令碼可以訪問瀏覽器的DOM並修改頁面的內容,不依賴伺服器的資料,直接從瀏覽器端獲取資料並執行。    特點:非持久型    資料流量走向:url->瀏覽器

危害:

- 竊取cookie- 未授權操作,比如劫持會話,刷流量,執行彈窗廣告,還能記錄使用者的鍵盤輸入- 傳播蠕蟲病毒- 網站釣魚,包括盜取各類使用者賬號- 網頁掛馬、進行惡意操作等

防禦:

- 使用htmlspecialchares之類的函式,設定httponly- 對使用者的輸入輸出進行過濾,對輸出進行轉義處理- 架設WAF,雖然不能完全解決XSS漏洞,但可以攔截大部分敏感資料,防止駭客利用

然後面試官問我CSP有了解嗎?我只知道CSP是什麼,但具體怎麼利用CSP防XSS還真沒了解過。(可以參考這篇文章:https://www.cnblogs.com/goloving/p/11186176.html)

五、SSRF的防禦、繞過方法

SSRF是伺服器端請求偽造,是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF的攻擊目標是從外網無法訪問的內部系統。
防禦:

- 過濾返回資訊,驗證遠端伺服器對請求的響應是比較容易的方法。如果web應用是去獲取某一種型別的檔案,那麼在把返回結果展示給使用者之前先驗證返回的資訊是否符合標準。- 統一錯誤資訊,避免使用者可以根據錯誤資訊來判斷遠端伺服器的埠狀態。- 限制請求的埠為http常用的埠,比如:80,443,8080,8090。- 黑名單內網IP。避免應用被用來獲取內網資料,攻擊內網。- 禁用不需要的協議。僅僅允許http和https請求,可以防止類似於file:///,gopher://,ftp://等引起的問題。

繞過方法:

- 限制為xxx.com域名時,可以利用@,比如xxx.com@www.baidu.com訪問還是百度- 採用短網址繞過- 採用進位制轉換繞過- 利用特殊域名- 利用句號:127。0。0。1  => 127.0.0.1- CRLF編碼繞過,%0d->0x0d->\r回車        %0a->0x0a->\n換行

六、websocket協議有了解嗎(當時沒回答出來)

可以參考這篇文章:https://blog.csdn.net/ly021499/article/details/127274924

七、http協議和https協議之間的區別

  • http是不加密的,https是透過SSL協議加密的
  • http是80埠,https是443埠
    面試官:你平常是用什麼工具進行抓包的呢?
    回答:最常用的是burp。
    面試官:那你平常有抓過https包嗎,你抓到的https包的資料流量是加密的嗎?
    當時回答的都是一些欄位加密,沒有說到https包的加密,其實透過fiddler抓https包是可以清楚的看到所有的流量都是加密的。

八、jsonp有了解過嗎

當時也是沒回答出來。可以參考https://blog.csdn.net/Daisy_i/article/details/124806871

九、k8s漏洞以及雲上攻防之類的有了解過嗎

完全沒接觸過,也沒回答出來,直接說了沒了解過。

十、問了我實習經歷的一些問題

我也就按照我實習的內容進行了一些闡述,介紹了一下我參加的隱寫溯源專案。

十一、Linux的基礎命令

  1. 當前主機外聯命令
    我到現在也沒明白問的具體是什麼,所以也不知道回答什麼。就說了ifconfig,ip route、netstat命令
  2. 檢視當前程序資訊命令
    ps -aux結合管道符來獲得具體程序的資訊
  3. 檢視安裝了哪些軟體包
    當時就回答了一個rpm -list,後面查了一下還有rpm -qa,yum list installed,apt list —installed

十二、網路協議

  1. 三次握手
    客戶端主動向伺服器端傳送一個請求,請求包中帶有一個seq序列號,假設seq=x;伺服器端接收到請求包後,返回一個響應包,響應包中帶有對第一個報文的回答和一個新的序列號,ack=x+1,seq=y;客戶端接收到伺服器端的響應後,也發一個響應包,帶有對上一個報文的回答,ack=y+1。至此,三次握手建立成功。
  2. OSI的七層
    物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層

十三、有哪些常見的邏輯漏洞

密碼找回漏洞,驗證碼繞過漏洞,越權漏洞,變數覆蓋漏洞,支付漏洞。
然後問了我一些邏輯漏洞具體怎麼實現的?
我就根據做靶場的一些經驗說了一下,反正基本上就是對關鍵欄位值進行修改。

十四、jwt令牌是什麼(這完全是因為我在說邏輯漏洞的時候提到了,面試官才問的)

jwt全稱json web token,是一種用於在網路應用之間傳遞宣告的安全方式。
面試官:那jwt令牌分為幾段呢?
我:三段。
面試官:那每一段是什麼含義?
我:第一段是頭部,包含令牌的型別和加密演算法;第二段是載荷,包含需要傳遞的資訊;第三段是簽名,用於驗證令牌的真實性。
面試官:那jwt攻擊有哪些?
我:當時也沒回答出來。但是面完之後一查,發現就是平常做題的那些方法,比如偽造金鑰,空加密演算法。

十五、給你一個cdn xss,你會怎麼利用?

當時也是沒回答出來,有大佬能給我講講嗎。

十六、讓我手撕程式碼,就是比較IP地址的大小

當時的思路就是根據.號進行分割,一位一位的比較。最後面試官提示我可以將IP地址轉換為2進位制直接進行比較就可以了。

以上就是面試的所有內容。第二天就收到了涼涼的郵件,廢了。

相關文章