」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Part SQL注入系列:高級SQL注入技巧詳解

Part SQL注入系列:高級SQL注入技巧詳解

發佈於2025-03-12
瀏覽:340

[2

Waymap pentesting工具:单击此处Part SQL Injection Series: Advanced SQL Injection Techniques trixsec github:单击此处

trixsec电报:单击此处

高级SQL注入利用 - 第7部分:尖端技术和预防

欢迎参与我们SQL注入系列的第7部分!该分期付款将攻击者采用的高级SQL注入技术

1。高级SQL注入技术

1.1。带外SQL注入 当攻击者无法直接观察其有效载荷结果时,使用带外(OOB)注入。相反,他们依靠DNS或HTTP请求来渗透数据。


如何工作: 有效载荷触发一个查询,该查询将数据发送到由攻击者控制的服务器。例如:

从用户中选择 *> 以上有效负载利用SQL Server的XP_DIRTREE提出出站DNS请求。

[2 2019年,攻击者使用OOB技术绕过了政府数据库中的传统防御和渗透敏感数据。

  • [2 从数据库中阻止出站DNS/HTTP请求。
使用网络监视工具来检测异常出站流量。
  SELECT * FROM users WHERE>



The above payload exploits SQL Server's xp_dirtree to make an outbound DNS request.

  • Real-World Example:

    In 2019, attackers used OOB techniques to bypass traditional defenses and exfiltrate sensitive data from a government database.

  • Mitigation:

    • Block outbound DNS/HTTP requests from the database.
    • Use network monitoring tools to detect unusual outbound traffic.

1.2. Boolean-Based Blind SQL Injection

This method determines true or false conditions based on subtle changes in the application's behavior.

  • Example Payload:
  ' AND 1=1 -- True condition  
  ' AND 1=2 -- False condition  

1.3。基于时间的盲sql注入
  • 该技术使用延迟来推断数据。攻击者观察服务器响应需要多长时间。

    示例有效载荷

  • 选择if(1 = 1,sleep(5),0); - 延迟响应5秒

    • 影响
    • 缓慢的查询会削弱服务器的性能,从而导致拒绝服务。
[2

使用限制限制来阻止过度的请求。 监视并终止长期查询。

  • 1.4。二阶SQL注入
  SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
  • [2

    攻击者将此有效载荷插入表格:

    robert');删除表用户; - -

  • 在审核期间,应用程序执行存储的有效载荷。

    [2
    • 即使在检索期间,即使在每个阶段都可以逃脱和消毒输入。
    • 使用不变的数据库函数来防止执行恶意脚本。

2。现实世界中的案例研究

案例研究1:Magento脆弱性(CVE-2019-8144)
  • 事件

    • 攻击者利用了Magento的电子商务平台中基于时间的SQL注入漏洞。
    他们绕过身份验证并获得了访问敏感客户数据的访问。
    Robert'); DROP TABLE users; --  
    
    [2
    • 定期修补软件以解决已知漏洞。
    在第三方插件和扩展程序上执行安全测试。
  • 案例研究2:Shopify(2020 fub Bounty)

    • 事件
    一位安全研究人员确定了Shopify API中的OOB SQL注入漏洞,该漏洞可以通过DNS泄漏敏感数据。
这是在剥削之前捕获的,这要归功于Shopify的Bug Bounty计划。

[2 投资漏洞赏金计划,以鼓励道德脆弱性报告。

利用API网关执行严格的查询验证。

3。先进的防御策略

  • 3.1。动态查询分析
  • 使用监视数据库查询的工具,以了解异常模式或过度复杂性。

工具

  • sqlmap:测试您的系统。
  • Aqua Security或Imperva:用于运行时保护。

3.2。上下文感知验证

基于上下文执行验证规则:

  • 登录页面
  • :验证凭据仅允许字母数值。

搜索表单:消毒输入以排除SQL运算符,例如Select或Union。

  • 3.3。数据库特定的配置
在mySQL中启用诸如
sql注入检测模式

之类的功能。 使用PostgreSQL中的SecComp过滤器限制危险操作。

3.4。连续穿透测试

    模拟攻击以在攻击者之前识别漏洞。
  • 使用OWASP ZAP或BURP SUITE等工具使用CI/CD管道自动化。
    • 4。实用挑战:剥削模拟和防御
设想

电子商务网站允许用户使用输入字段搜索产品。测试并保护它。

[2

注入有效负载以检测SQL注入漏洞:
  • '或'1'='1' -
  • 如果网站易受伤害,请使用SQLMAP之类的自动化工具来模拟数据提取。 [2
实施准备的语句:

);

  • 使用严格的模式验证输入:
  • 导入re 模式= r“^[A-ZA-Z0-9] $” 如果不重新匹配(模式,user_input): 提高价值Error(“无效输入!”)

5。 SQL注入攻击的趋势

    5.1。云exploits
  • 基于云的数据库越来越多,由于配置错误。

5.2。 API漏洞

随着微服务的兴起,设计较差的API是攻击者的切入点。

5.3。 AI驱动攻击

自动工具利用AI来制作复杂的注射有效载荷。

最终想法

  1. 这个高级会话强调了SQL注入的不断发展的性质和主动防御的重要性。通过了解尖端技术并实施强大的安全措施,您可以大大降低剥削的风险。
〜trixSec
   ' OR '1'='1' --  
    版本聲明 本文轉載於:https://dev.to/trixsec/how-to-detect-and-defend-against-sql-injection-attacks-part-6-advanced-sql-injection-techniques-20mf?1如有侵犯,請聯繫[email protected]刪除
    最新教學 更多>
    • Python中嵌套函數與閉包的區別是什麼
      Python中嵌套函數與閉包的區別是什麼
      嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
      程式設計 發佈於2025-05-20
    • 如何從PHP中的Unicode字符串中有效地產生對URL友好的sl。
      如何從PHP中的Unicode字符串中有效地產生對URL友好的sl。
      為有效的slug生成首先,該函數用指定的分隔符替換所有非字母或數字字符。此步驟可確保slug遵守URL慣例。隨後,它採用ICONV函數將文本簡化為us-ascii兼容格式,從而允許更廣泛的字符集合兼容性。 接下來,該函數使用正則表達式刪除了不需要的字符,例如特殊字符和空格。此步驟可確保slug僅包...
      程式設計 發佈於2025-05-20
    • Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
      Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
      A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
      程式設計 發佈於2025-05-20
    • 如何使用PHP從XML文件中有效地檢索屬性值?
      如何使用PHP從XML文件中有效地檢索屬性值?
      從php PHP陷入困境。 使用simplexmlelement :: attributes()函數提供了簡單的解決方案。此函數可訪問對XML元素作為關聯數組的屬性: - > attributes()為$ attributeName => $ attributeValue){ echo...
      程式設計 發佈於2025-05-20
    • 如何實時捕獲和流媒體以進行聊天機器人命令執行?
      如何實時捕獲和流媒體以進行聊天機器人命令執行?
      在開發能夠執行命令的chatbots的領域中,實時從命令執行實時捕獲Stdout,一個常見的需求是能夠檢索和顯示標準輸出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
      程式設計 發佈於2025-05-20
    • 如何從Google API中檢索最新的jQuery庫?
      如何從Google API中檢索最新的jQuery庫?
      從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
      程式設計 發佈於2025-05-20
    • 用戶本地時間格式及時區偏移顯示指南
      用戶本地時間格式及時區偏移顯示指南
      在用戶的語言環境格式中顯示日期/時間,並使用時間偏移在向最終用戶展示日期和時間時,以其localzone and格式顯示它們至關重要。這確保了不同地理位置的清晰度和無縫用戶體驗。以下是使用JavaScript實現此目的的方法。 方法:推薦方法是處理客戶端的Javascript中的日期/時間格式化和...
      程式設計 發佈於2025-05-20
    • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
      如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
      Transform Pandas DataFrame Column to DateTime FormatScenario:Data within a Pandas DataFrame often exists in various formats, including strings.使用時間數據時...
      程式設計 發佈於2025-05-20
    • 在Pandas中如何將年份和季度列合併為一個週期列?
      在Pandas中如何將年份和季度列合併為一個週期列?
      pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 這個目標是通過組合“年度”和“季度”列來創建一個新列,以獲取以下結果: [python中的concate...
      程式設計 發佈於2025-05-20
    • 如何同步迭代並從PHP中的兩個等級陣列打印值?
      如何同步迭代並從PHP中的兩個等級陣列打印值?
      同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
      程式設計 發佈於2025-05-20
    • Java是否允許多種返回類型:仔細研究通用方法?
      Java是否允許多種返回類型:仔細研究通用方法?
      在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
      程式設計 發佈於2025-05-20
    • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
      如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
      從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
      程式設計 發佈於2025-05-20
    • Java數組中元素位置查找技巧
      Java數組中元素位置查找技巧
      在Java數組中檢索元素的位置 利用Java的反射API將數組轉換為列表中,允許您使用indexof方法。 (primitives)(鏈接到Mishax的解決方案) 用於排序陣列的數組此方法此方法返回元素的索引,如果發現了元素的索引,或一個負值,指示應放置元素的插入點。
      程式設計 發佈於2025-05-20
    • 如何正確使用與PDO參數的查詢一樣?
      如何正確使用與PDO參數的查詢一樣?
      在pdo 中使用類似QUERIES在PDO中的Queries時,您可能會遇到類似疑問中描述的問題:此查詢也可能不會返回結果,即使$ var1和$ var2包含有效的搜索詞。錯誤在於不正確包含%符號。 通過將變量包含在$ params數組中的%符號中,您確保將%字符正確替換到查詢中。沒有此修改,PD...
      程式設計 發佈於2025-05-20
    • 如何使用FormData()處理多個文件上傳?
      如何使用FormData()處理多個文件上傳?
      )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
      程式設計 發佈於2025-05-20

    免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

    Copyright© 2022 湘ICP备2022001581号-3