IntelliJ IDEA技巧
IntelliJ IDEA技巧
1. IDEA搜索技巧
IDEA的搜索快捷鍵是:??F,使用IDEA提供的搜索功能可以非常快速的定位漏洞點信息。

IDEA可以通過自定義搜索范圍來精確查找我們需要審計的代碼。默認搜索的是所有的位置,不過我們可以點擊紅色箭頭指向的...按鈕來細化我們的搜索范圍。
1.1 自定義范圍搜索

自定義搜索范圍示例:

自定義搜索范圍后就可以在搜索時使用自定義的配置進行范圍搜索了,有助于我們在挖漏洞的時候縮小代碼定位范圍。

1.2. 標記搜索
搜索快捷鍵: ?O,標記搜索支持類名、方法名搜索(包括class或jar文件中的方法也支持搜索)。

2. Java調用鏈搜索
當我們審計代碼的時候發現某個方法或類有漏洞時我們需要定位到漏洞的請求地址(觸發點),復雜業務系統往往會讓我們很難定位到漏洞的觸發點。借助IDEA的方法調用鏈搜索功能就可以很輕松的找出方法的調用鏈和觸發點。
選擇類或者方法名–>右鍵–>Find Useages或者使用快捷鍵?F7

3. 顯示類所有方法
如果某個類有非常多的方法,我們無法快速找到想看的方法時可以使用快捷鍵?F12

如果想顯示父類方法可以把Inherited members勾上,反之去掉。
4. 顯示類繼承關系
某些類實現的非常復雜,繼承和實現了非常多的類,比較影響我們分析業務,這個時候我們可以在某個類的空白處右鍵->Diagrams->Show Diagram或者使用快捷鍵???U

示例RequestFacade類的繼承關系圖:

點擊左上角的小圖標F、M?、M、P、I分別會展示詳細的:成員變量、構造方法、方法、屬性、內部類。
如果想顯示多個類的繼承關系,可以將任意類文件拖拽到右圖就會生成多類之間的繼承關系,如Tomcat中的HttpServletRequest類和ApplicationHttpRequest類都實現了HttpServletRequest接口,那么拖拽到一起就可以看到它們倆之間的如下關聯關系:

5. 自動反編譯
IDEA的反編譯效果非常的不錯,大部分時間都可以直接使用IDEA的反編譯功能來代替反編譯工具。
5.1 自動反編譯class文件
將任意的class文件丟到IDEA的源碼目錄就可以立即看到反編譯之后的文件,這樣就可以省去打開反編譯工具的時間了,如圖:

請注意,直接在IDEA中粘貼是會出錯的,應該以文件的形式拷貝到對應目錄。如果嫌打開目錄IDEA中的文件所在目錄過于麻煩,可以點擊文件名或在已打開的文件中右鍵->Reveal in Finder

如果不想鼠標點擊可以設置個自己喜歡的快捷鍵,這樣就會非常方便了:

5.2 jar文件反編譯
IDEA反編譯jar文件也是非常的方便,只需把jar包丟到任意目錄,然后右鍵->Add as library就可以了。

jar反編譯示例:

6. Http請求測試
很多人為了測試API接口總喜歡使用Burp或者Postman之類的工具去發送Http請求,殊不知IDEA就內置了非常方便的Http請求工具。在項目的任意位置:右鍵->new->File->test.http,然后就會創建出一個叫test.http的文件。

Http環境變量配置文件不是必須的,如需配置,需點擊右上角的Add Environment File,然后自行添加變量,如:
{
"dev": {
"url": "http://localhost:8080",
"json": "application/json"
}
}
7. 本地歷史記錄
在調試IDEA的時候如果不小心誤刪了文件或者改某個文件時都改一半了發現改錯了,而且還沒有git之類的版本提交記錄。這個時候我們可以使用IDEA的本地文件歷史編輯記錄功能,選擇任意文件或者目錄右鍵->Local History->Show History:

查看本地修改文件記錄:

也可直接選擇時間點,點擊Revert還原文件到指定時間修改的版本:

8. 文件比較
IDEA不僅可以很方便的比較版本控制中的修改文件,還自帶了一個文件比較功能。
8.1 粘貼板文件比較
復制一個文件的內容到粘貼板,然后打開需要比較的文件后點擊右鍵->Compare with Clipboard:

文件對比:

8.2 文件比較
如果嫌比較粘貼板比較麻煩,可以直接選中需要比較的文件右鍵->Compare With...,如下:

然后在本地文件中選擇一個需要比較的文件即可:

8.3 VCS文件比較
版本控制的文件比較方式非常簡單,配置好VCS(Version Vontrol System,版本控制系統)后本地修改的文件和遠程的文件可以直接比較,如圖:

9. 類/資源文件熱更新
IDEA中默認不會將修改的文件和資源自動同步到Web Server或者SpringBoot,需要我們手動設置當類文件或資源文件發生修改后同步更新。
Web容器熱更新:

SpringBoot熱更新:

Java Web安全
推薦文章: