2.3 sqlmap目錄及結構

2.3 sqlmap目錄及結構
Tips:此篇文章主要參考了《sqlmap從入門到精通》這本書中的相關具體細節,由於這本書作者完成的時間大概在2017年作用,所以我根據書中提到的資訊再根據目前最新版的sqlmap目錄結構進行了優化。

 

 

2.3.1 sqlmap文件目錄及主文件

1.sqlmap目錄結構

2.sqlmap主文件解讀
(1) .gitattributes git的屬性文件,例如:是什麼程式語言,具體的文件類型等等
(2) .gitignore git需要忽略的文件,一般按照理解,把一些沒有必要傳上去的文件排除在外,不用上傳至git倉庫中
(3) .travis.yml 標記Python版本和設置sqlmap的腳本
(4) .pylintrc Python程式碼分析工具,用於分析Python程式碼中的錯誤和不符合程式碼風格標準的問題程式碼
(5) LICENSE 授權許可文件
(6) COMMITMENT 相關承諾 GPL Cooperation Commitment
(7) README.md 相關的說明文件,簡單的指導怎麼使用安裝sqlmap,還針對各種語言版本進行介紹
(8) sqlmap.conf sqlmap調用的配置文件,比如一些默認的參數,或者是想要提前配置一些默認的參數進行批量自動化掃描探測
(9) sqlmap.py sqlmap的主程式,是執行啟動sqlmap的程式,執行期間可以調用各種參數進行測試,可以理解為一個可執行文件,到目前位置sqlmap是可以直接支援python2和python3 所以一般的執行操作是python sqlmap.py -u url 就可以開啟對目標進行SQL注入測試
(10) sqlmapapi.py sqlmap的API文件,可以將sqlmap集成到其他各種平台,比如常用的是在Burpsuite的插件調用sqlmapapi.py介面,進行自動化掃描測試
(11) sqlmap.pyc sqlmap在python下生成的pyc位元組碼文件,這個可以簡單的理解為是編譯好的程式文件,可以使用uncompyle2進行反編譯,命令如下:
uncompyle2 -o sqlmap.py sqlmap.pyc 也可以使用uncompyle6 //github.com/rocky/python-uncompyle6 //github.com/zrax/pycdc

2.3.2 sqlmap文件目錄解讀

(1) .github git的程式碼管理倉庫,基本上每個github倉庫都會有這個文件夾,記錄了文件上傳更改等版本資訊
(2) doc 從字面上的意思就知道這是個文檔說明,裡面放的是sqlmap文檔資訊,文件夾裡面包含sqlmap的簡單使用手冊,含有每個國家語言的簡要說明文檔,有作者資訊,更改歷史記錄資訊,致謝資訊,第三方插件致謝資訊
(3) extra 包含了sqlmap的各種額外功能,包括但不限於發出聲響的(beep.py), 程式碼加密(cloak.py -i bmfx.php -o bmfxtech.php) ,二進位轉換(./dbgtool.py -i ./nc.exe -o nc.scr) ,運行cmd,安全執行,shellcode等等
(4) lib 這裡包含了sqlmap的多種連接庫,例如:sqlmap的5中SQL注入類型請求的參數,提權操作等
(5) plugins 插件庫,例如:在使用sqlmap連接資料庫的時候需要用到其中的一些不同資料庫的python連接類,以及各種資料庫的資訊和資料庫通用事項等
(6) tamper 這裡包含了57個繞過腳本,例如:編碼繞過,注釋繞過等等,還有很多
(7) thirdparty 這裡包含了一些第三方的插件,例如:優化,保持連接,顏色等等
(8) data 這個目前在老版本的sqlmap中是沒有的,在目前最新版本的1.4.5.28中存在 ,其實也沒有變什麼就是把原來的部分文件夾移動到了這個data文件夾裡面,目前data文件夾裡面有如下文件夾:
html, procs, shell, txt, udf, xml
html 裡面有個index.html文件,打開是關於sqlmap的各種選項
procs 包含了mssqlserver、 mysql、oracle和postgresql的觸發程式,存放了一些SQL語句,主要涉及DNS帶外傳輸數據的一些資料庫命令
shell 注入成功時使用的4中shell,這些shell是經過加密的
txt 包含一些字典,例如:用戶瀏覽器代理,表,列,和關鍵字等
udf UDF提權用的dll或者so文件,包含了用戶自己自定義的攻擊Payload
xml 包含了多種資料庫的注入檢測載荷、旗標資訊以及其他資訊

2.3.3 子目錄解讀

1.sqlmap/doc目錄
(1) translations 翻譯文件夾,包含下載,安裝和使用sqlmap的簡要說明文檔,該文件包含17種語言版本,中文版本也在裡面
(2) AUTHORS 作者資訊,介紹了sqlmap的程式編寫者及其郵箱,發現sqlmap的相關問題可以直接發送郵件給作者
(3) CHANGELOG.md 更新日誌,介紹了sqlmap更新了哪些功能,Bug修復及相關特性
(4) THANKS.md 感謝文檔,介紹對sqlmap有貢獻的作者
(5) THIRD-PARTY.md 第三方插件,介紹集成在sqlmap的第三方插件的概要說明

2.sqlmap/extra目錄
(1) beep 警報聲音文件夾
beep.py 執行後會發出警報聲音,參數為–beep,當發現SQL注入的時候,發出警報聲
beep.wav 警報聲音的文件
(2) cloak 利用cloak.py可以生成和解密後門等操作
(3) dbgtool 執行轉換的文件夾
dbgtool.py 可以將ASCII文本轉化為攜帶型的exe文件,生成的nc.exe 可以安裝到Windows上,進行後門監聽,python ./dbgtool.py -i ./nc.exe -o nc.scr
(4) icmpsh 一個win32的反向icmpshell,在注入成功之後反彈回來的一種shell
(5) runcmd 注入成功後,反彈回來cmd命令的輔助工具
(6) shellcodeexec 被安裝在受害者機器上的shellcode,這些不是在自己的機器上運行,是要在目標機器上運行,含有Windows和Linux的32和64位的文件
(7) shutils 文件操作工具,python文件操作,實現查找第三方插件等相關功能
(8) vulnserver 簡易的漏洞服務,用於fuzz測試
推薦://peonycsa.com/sqlmap-codeanlysis/

3.sqlmap/lib目錄

(1) controller
action.py 利用URL受到影響的參數進行SQL注入,並且在條件許可下抽取系統或者資料庫中的數據。
checks.py 利用載荷對發現的sql注入點進行注入檢測。
controller.py 對用戶傳遞的參數進行控制。
handler.py 對用戶傳遞的資料庫名稱進行處理
(2) core 這是核心文件夾有各種參數的調用文件,例如設置目標 會調用 target.py。還有agent.py,dump.py,threads.py等等
(3) parse 該參數文件夾有banner.py cmdline.py sitemap.py configfile.py payloads.py handler.py html.py headers.py 等一系列配置處理參數調用文件
(4) request 該請求文件夾有basic.py templates.py basicauthhandler.py redirecthandler.py comparison.py rangehandler.py connect.py pkihandler.py direct.py methodrequest.py dns.py inject.py httpshandler.py 等一系列網路請求連接文件
(5) takeover 這個是接管文件夾,文件夾裡面有abstraction.py xp_cmdshell.py icmpsh.py web.py metasploit.py udf.py registry.py 注入成功後接管受害者機器的shell.
(6) techniques 這個是注入分類文件夾有blind,dns,error,union,brute 等物類注入類型,其中每個文件夾有相應的注入類型執行文件。
(7) utils 這是小功能文件夾。該文件中含有 api.py xrange.pycrawler.py versioncheck.py deps.py timeout.py getch.py hash.py sqlalchemy.py hashdb.py search.py htmlentities.py purge.py pivotdumptable.py progress.py 等多種功能的調用文件。

4.sqlmap/plugins目錄
(1) dbms 包含各種資料庫枚舉,連接和接管等相關說明,sqlmap支援Access,DB2,FireBird,HSQLDB,MaxDB,MSSQLServer,MySQL,Oracle,PostgreSQL,SQLite和Sybase資料庫等等,每個資料庫文件都有固定的文件,例如,MySQL文件夾中含有connector.py, enumeration.py, filesystem.py, fingerprint.py, syntax.py, takeover.py
(2) generic 這是個通用文件夾,裡面包含 connector.py, custom.py, databases.py, entries.py, enumeratioin.py, filesystem.py, fingerprint.py, misc.py, search.py, syntax.py, takeover.py, users.py

5.sqlmap/tamper目錄
這個木是用來注入繞過各種防火牆的腳本文件目錄,裡面含有57個用來繞過防火牆的腳本文件,具體如下:
apostrophemask.py apostrophenullencode.py appendnullbyte.py base64encode.py between.py bluecoat.py chardoubleencode.py charencode.py charunicodeencode.py commalesslimit.py commalessmid.py concat2concatws.py equaltolike.py escapequotes.py greatest.py halfversionedmorekeywordsifnull2ifisnull.py informationschemacomment.lowercase.py modsecurityversioned.py modsecurityzeroversioned.multiplespaces.py nonrecursivereplacement.poverlongutf8.py percentage.py randomcase.py randomcomments.py securesphere.py sp_password.py space2comment.py space2dash.py space2hash.py space2morehash.py space2mssqlblank.py space2mssqlhash.py space2mysqlblank.py space2mysqldash.py space2plus.py space2randomblank.py symboliclogical.py unionalltounion.py unmagicquotes.py uppercase.py varnish.py versionedkeywords.py versionedmorekeywords.py xforwardedfor.py

打開每個腳本,可以看到這些腳本的適用條件和環境,可以參考以下文章:
參考://blog.csdn.net/qq_29277155/article/details/51193071

6.sqlmap/thirdparty目錄
這個是sqlmap的第三方插件,實現各種優化格式的小功能。

(1) ansistrm 該文件夾中主要文件是ansistrm.py,它定義了結果輸出終端的顏色顯示。
(2) beautifulsoup #該文件夾中主要文件是beautifulsoup.py,它把XML等轉化為樹狀表示法,用於爬取目標站點,參數為–crawl。
(3) bottle 是Python的一個快速,簡單和輕巧的WSGI微Web框架。它作為單個文件模組,不依賴其他Python標準庫。主要文件是bottle.py,它是構建靜態和動態HTTP請求的關鍵所在,雖然支援Python3,但是由於sqlmap整體是採用python2開發的,所以這裡會進行一個兼容性檢查。
(4) chardet 該文件夾中有眾多字元探針和字元定義文件,主要作用是探測web頁面的頁面編碼。
(5) clientform 該文件夾主要文件是clientform.py,它對Web客戶端進行HTML表格處理。
(6) colorama 該文件夾裡面的文件其主要功能是為了將ansi轉化為win32編碼。
(7) fcrypt 該文件夾主要為標準的Linux加密提供埠,或者說是修復缺失加密功能的Python版本,用於破解通用密碼哈希值,參數為–passwords
(8) gprof2dot #該文件夾裡面的文件主要提供了從幾個解析器的輸出中產生一個dot 圖形,
(9) keepalive #該文件夾裡面的文件是keepalive.py,它的urllib2對HTTP處理程式支援HTTP1.1和存活,keepalive用於持久的HTTP(s)請求,參數為–keep-alive和-o
(10) magic #該文件夾主要裡面的文件是magic.py,magic 是一個libmagic文件識別庫的包裝器,用於識別和顯示日誌消息中的文件類型,參數為–file-write
(11) multipart 該文件夾裡面的文件是multipartpost.py,進行多執行緒發送數據包。
(12) odict 該文件夾裡面的文件是odict.py,為有序字典對象,保存插入順序的密鑰。
(13) oset Python ABC類的部分修補程式,pyoset.py為主要程式,_abc.py為輔助類的ABC類說明,oset用於對所提供的排序目標進行排序,參數-l,-m和-g
(14) prettyprint 該文件夾裡面主要的文件是prettyprint.py,該腳本優化終端結果輸出顯示,用於生成xml輸出,參數為 –xml
(15) pydes Python中3DES加密解密演算法,其中裡面有加密解密演算法說明,用於破解Oracle舊密碼格式,參數為 –passwords
(16) socks Python中的sock模組
(17) termcolor 該文件夾裡面文件是termcolor.py,它實現了終端輸出的顏色格式化。
(18) wininetpton 網路地址
(19) xdot dot格式的可視化圖形,用於內部測試
(20) six 這裡是空文件夾(__init__.py 都不算在內)

7.sqlmap/data目錄
新版的sqlmap新建了一個目錄為data,將部分文件夾組件移動到此目錄下面
(1) html 該文件夾裡面含有一個index.html文件,打開發現是關於sqlmap的Option配置的頁面,但是功能不多,也發點擊其他功能選項,待實際使用中挖掘
(2) procs 該文件夾下面存放的是關於存儲進程訪問的文件,具體有4中資料庫類型,如下:
mssqlserver 訪問MSSQLServer處理的進程,方便對數據進行訪問
mysql 訪問MySQL處理的進程,方便對數據進行訪問
oracle 訪問Oracle處理的進程,方便對數據進行訪問
postgresql 訪問Postgresql處理的進程,方便對數據進行訪問
(3) shell 該文件夾下有兩個文件夾分別是backdoors和stagers,具體如下:
backdoors 後門文件backdoor.asp_ , backdoor_aspx , backdoor.jsp_ , backdoor.php_ , 程式碼經過加密cloak.py可以對輸入文件進行加密,例如:cloak.py -i backdoor.php -o backdoor2.php ,backdoor.php為明文PHP程式碼文件,經過cloak.py 轉換後,backdoor2.php 為亂碼文件
stagers 包含stager.asp_ , stager.aspx_ , stager.jsp_ 和stager.php_文件
(4) txt 該文件夾裡面存放的都是字典文件,其中會包含關鍵詞,公共列表和其他字典 ,具體含有如下字典文件:
common-columns.txt 資料庫中的共同列
common-files.txt 資料庫中的共同文件路徑
common-outputs.txt 資料庫中的共同輸出。
common-tables.txt #資料庫中的共同表。
keywords.txt 資料庫中的共同關鍵詞。
smalldict.txt 資料庫中的字典。
user-agents.txt 進行請求時的瀏覽器代理頭。
wordlist.tx_ 字典壓縮文件,這裡從官方下載下來就是這樣的,如果自己要看,需要自己將後綴改成zip格式查看
(5) udf 該文件夾裡面主要存放的是提權工具,具體如下:
mysql 包括Linux和Windows的lib_mysqludf_sys.dll_ 32和64位都有
postgresql 包括Linux和Windows的lib_mysqludf_sys.dll_ 32和64位都有
(6) xml 該文件夾裡面主要是做資訊記錄的,裡面含有如下文件:
banner 各種數據及其相關數據的標誌XML記錄,例如:cookie.xml , generic.xml , mssql.xml , mysql.xml , oracle.xml , postgresql.xml , servlet.xml , sharepoint.xml , x-aspnet-version.xml , x-powered-by.xml
payloads 布爾,錯誤,內聯查詢,堆疊查詢,延時盲注和聯合查詢6種注入類型的攻擊注入檢測載荷
boundaries.xml 邊界記錄文件
errors.xml 錯誤顯示的XML文件
queries.xml 查詢記錄的XML文件

 

Tags: