?

Dec 09 2016

sqlmap 的源碼學習筆記一之目錄結構

首頁 » 滲透測試 » sqlmap 的源碼學習筆記一之目錄結構   

0x00 前言

sqlmap 是一個開源的滲透測試工具,可以用來自動化的檢測,利用SQL注入漏洞,獲取數據庫服務器的權限。它具有功能強大的檢測引擎,針對各種不同類型數據庫的滲透測試的功能選項,包括獲取數據庫中存儲的數據,訪問操作系統文件甚至可以通過外帶數據連接的方式執行操作系統命令。本文重點研究sqlmap的軟件具體的目錄結構,后續的文章也會從源碼編寫中,闡述sqlmap的種種編碼結果。本文從結構中,可以看到sqlmap中的軟件工程之美,同時從嚴謹的軟件結構目錄分類和構造中,看到sqlmap中的軟件開發過程中的龐大但簡潔的結構之美。

 

0x01目錄結構簡要

一般來說,從github下載并且解壓sqlmap 后,所有文件或者文件夾的數目加起來總共24個,部分目錄和結構屬于典型的github 項目結構,但是本文依然會做出簡單的介紹,方便讀者全面理解。

.git --->>>這個是git的代碼管理倉庫,基本上每個github項目都會有這個文件夾,記錄了文件上傳更改等版本信息。

.gitattributes--->>>這個是git的屬性文件,例如何種編程語言、具體文件類型等。

.gitignore--->>>這個是git的忽略文件,例如忽略某些文件,不把這些文件上傳到git倉庫中。

.travis.yml--->>>這個標記了python的版本和設置sqlmap的腳本。

doc/ ---->>>該文件夾包含了sqlmap 的具體使用說明,例如多種語言的簡要說明、PDF版的詳細說明、FAQ、作者信息等。

extra/ --->>>這里包含了sqlmap的多種額外功能,例如發出聲響(beep)、運行cmd、安全執行、shellcode等。

lib/ --->>>這里包含了sqlmap的多種連接庫,如五種注入類型請求的參數、提權操作等。

plugins/ --->>>這里包含了各種數據庫的信息和數據庫通用事項。

procs/ --->>>這里包含了mssqlserver、 mysql、oracle和postgresql的觸發程序

shell/ --->>>這里包含了多種注入成功后的9種shell 遠程連接命令執行和管理數據庫

tamper/ --->>>這里包含了47種的繞過腳本,例如編碼繞過、注釋繞過等。

thirdparty/ --->>>這里包含了一些其他第三方的插件,例如優化、保持連接、顏色等。

txt/ --->>>這里包含了一些字典,例如用戶瀏覽器代理、表、列、關鍵詞等。

udf/ --->>>這里包含了用戶自己定義的攻擊載荷。

waf/ --->>>>這里包含了一些44種常見的防火墻特征。

xml/ --->>>這里包含了多種數據庫的注入檢測載荷、旗標信息以及其他信息。在這里可以看到進行注入的。

README.md--->>>說明文件,簡要地指導我們下載、安裝和使用sqlmap,里面有多種語言版本(中文)的安裝下載使用介紹說明。

sqlmap.conf --->>>> sqlmap的配置文件,如各種默認參數(默認是沒有設置參數、可設置默認參數進行批量或者自動化檢測)。

sqlmap.py* --->>>> 這是sqlmap 的主程序,可以調用各種參數進行注入任務。

sqlmapapi.py* --->>>>這是sqlmap 的api 文件,可以將sqlmap集成到其他平臺上。

 

0x02 目錄 sqlmap/doc/

這里包含了sqlmap 的具體使用說明。如多種語言的簡要說明、PDF版的詳細說明、FAQ、作者信息等。以下是文件夾的內容:
README.pdf #英文說明文檔,它非常詳細介紹了如何調用各種參數和設置來使用sqlmap。善于熟練利用sqlmap也是很厲害的
FAQ.pdf #英文解疑文檔,它羅列了在使用sqlmap經常遇到的問題和解決,無論是安裝還是使用過程出現問題,可以查看幫助。
translations #翻譯文件夾,包含了下載、安裝和使用sqlmap的簡要說明文檔,該文件包含多種語言版本,其中也有中文版。
AUTHORS #作者信息,它介紹了sqlmap的編者及其郵箱。國外的兩個大牛很慷慨地開源了sqlmap注入工具,想想烏云中,有多人靠它四處挖洞,實在應該感謝編者。
CHANGELOG.md #更新日志,介紹了sqlmap 的更新功能及特性。很多優秀的功能等待挖掘。但很多人沒有注意,畢竟絕大部分同學用的都是基本功能。
CONTRIBUTING.md #貢獻文件,它介紹我們在使用sqlmap的時如果有bug可以提交攻貢獻到github.
COPYING #版權文件,它介紹了sqlmap的發布權利和重新分發的說明。
THANKS.md #感謝文檔,它介紹了對sqlmap有所貢獻的作者。
THIRD-PARTY.md #第三方插件,它介紹了集成在sqlmap的第三方插件的概要說明。
 

0x03 目錄 sqlmap/extra/

sqlmap/extra/beep/ #警報聲音文件夾。
sqlmap/extra/beep/ beep.py,它是產生警報聲音的文件,參數為--beep,當發現sql注入的時候,發出警報聲。
sqlmap/extra/beep/ beep.wav 警報的聲音文件。
sqlmap/extra/dbgtool/ # 執行轉換的文件夾。
sqlmap/extra/dbgtool/dbgtool.py #可以 ASCII文本轉化到便攜式的exe文件,生成的nc.exe可以安裝windows上,進行后門監聽。
sqlmap/extra/dbgtool/ README.txt為該文件的說明文件。
sqlmap/extra/mssqlsig/update.py#它更新了MSSQL版本號,不過好像URL打不開了。莫非是國內的原因。
sqlmap/extra/safe2bin/ #文件夾,具有轉成bin文件功能的文件。例如你可以把一個文本轉換成可執行文件。其README.txt有它的簡要說明、safe2bin.py是可操作的執行文件。
sqlmap/extra/shutils/ #python的文件操作工具。它實現了查找第三方插件等功能。
sqlmap/extra/cloak/ #可以利用cloak.py可以生成后門等操作。
sqlmap/extra/icmpsh/ #一個win32的反向ICMPshell,是進行注入成功后反彈回來的一種shell.
sqlmap/extra/runcmd/ #進行注入成功后,反彈回來cmd命令的輔助工具.
sqlmap/extra/shellcodeexec/ #被安裝在受害者機器上的shellcode,這些并非在自己的機器上運行的,里面有windows的32,linux的32,64位
sqlmap/extra/sqlharvest/ #利用google進行搜索爬取文件。

 

 

0x04 目錄sqlmap/lib

sqlmap調用多種功能的庫,以下是其文件夾里面的內容:

 

controller # 該目錄能夠進行一系列的檢查貯備工作,下面簡要介紹幾個文件。
action.py # 利用URL受到影響的參數進行SQL注入,并且在條件許可下抽取系統或者數據庫中的數據。
checks.py #利用載荷對對發現的sql注入點進行注入檢測。
controller.py #對用戶傳遞的參數進行控制。
handler.py #對用戶傳遞的數據庫名稱進行處理
core # 該核心文件夾有各種參數的調用文件。例如設置目標 會調用 target.py。還有agent.py,dump.py,threads.py等等。
parse # 該參數文件夾有banner.py cmdline.py sitemap.py configfile.py payloads.py handler.py html.py headers.py 等一系列配置處理參數調用文件。
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 等一系列網絡請求連接文件。
takeover # 該接管文件夾有abstraction.py xp_cmdshell.py icmpsh.py web.py metasploit.py udf.py registry.py 注入成功后接管受害者機器的shell.
techniques #該注入分類文件夾有blind brute dns error union 等五類注入類型,其中每個文件夾有相應的注入類型執行文件。
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 等多種功能的調用文件。

 

0x05sqlmap\plugins

插件說明

dbms #該文件夾包含了各種數據說明。例如access db2 firebird hsqldb maxdb mssqlserver mysql oracle postgresql sqlite sybase 等,每個數據庫文件都有固定的文件。例如access文件夾里面有connector.py enumeration.py takeover.py filesystem.py syntax.py fingerprint.py 等文件。
generic #通用文件夾。它也是包含了connector.py enumeration.py takeover.py filesystem.py syntax.py fingerprint.py 等文件。

 

0x06sqlmap\procs

對部分數據庫的進行注入時訪問進程

mssqlserver #對mssqlserver進行處理的進程進行訪問,方便對數據進行訪問。
mysql#對mysql進行處理的進程進行訪問,方便對數據進行訪問。
oracle#對oracle進行處理的進程進行訪問,方便對數據進行訪問。
postgresql#對postgresql進行處理的進程進行訪問,方便對數據進行訪問。
README.txt #對該文件夾的說明。該文件sqlmap在目標系統上使用的SQL片段。

 

0x07sqlmap\shell

相信大家看著那些名稱,也會明白它們是sqlmap成功注入系統的shell,各種語言的shell, 為了躲避查殺,需要進行一定的轉換,至于如何轉換在README.txt 有詳細說明。/extra/cloak/cloak.py 可以把這些后門還原成可閱讀的代碼。
backdoor.asp_ backdoor.aspx_backdoor.jsp_ backdoor.php_ runcmd.exe_ stager.asp_ stager.aspx_ stager.jsp_ stager.php_
README.txt #以上shell均是加密了,直接打開是亂碼的,所以可以按照說明文檔進行轉換。

 

0x08sqlmap\tamper

這里有多種進行注入時繞過防火墻的腳本,33種,組合多種腳本來用,效果還是不錯的。以下是具體的繞過腳本:

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.pyxforwardedfor.py

#打開每個腳本,可以看到這些腳本的適用條件和環境,可以參考以下文章:

http://blog.csdn.net/qq_29277155/article/details/51193071

 

0x09sqlmap\thirdparty

第三方插件,實現各種優化格式的小功能。

ansistrm #該文件夾中主要為ansistrm.py,它定義了結果輸出終端的顏色顯示。
beautifulsoup #該文件夾中主要為beautifulsoup.py,它把XML等轉化為樹狀表示法。
bottle #bottle是Python的一個快速,簡單和輕巧WSGI微Web框架。它分布作為單個文件模塊,不依賴其他Python標準庫。主要為bottle.py,它是構建靜態和動態HTTP請求的關鍵所在,雖然支持python3,但是由于sqlmap整體是采用python2開發的,所以這里會進行一個兼容性檢查。
chardet #該文件夾中有眾多字符探針和字符定義文件,主要作用是探測web頁面的頁面編碼。
clientform #該文件夾主要為clientform.py,它對Web客戶端進行HTML表格處理。
colorama #該文件夾的主要功能是為了將ansi轉化為win32編碼。
fcrypt #該文件夾主要為標準的linux加密提供端口,或者說是修復缺失加密功能的python版本。
gprof2dot #該文件夾提供了從幾個解析器的輸出中產生一個dot 圖形,
keepalive #該文件夾主要為keepalive.py,它的urllib2對HTTP處理程序支持HTTP1.1和存活。
magic #該文件夾主要為magic.py,magic 是一個libmagic文件識別庫的包裝器。
multipart #該文件夾主要為multipartpost.py,進行多線程發送數據包。
odict #該文件夾主要為odict.py,主要為有序字典對象,保存插入順序的密鑰。
oset #python ABC類的部分補丁,pyoset.py為主要程序,_abc.py為輔助類的ABC類說明。
pagerank #該文件夾主要為pagerank.py,獲取谷歌網頁排名的頁面的腳本。
prettyprint #該文件夾主要為prettyprint.py,該腳本優化終端結果輸出顯示。
pydes #python中3DES加密解密算法,其中里面有加密解密算法說明。
socks #python中的sock模塊。
termcolor #該文件夾中主要為termcolor.py,它實現了終端輸出的顏色格式化。

xdot #dot格式的可視化圖形。

 

0x10sqlmap\txt

該文件夾包含了關鍵詞、公共列表和其他一些字典。具體如下:

common-columns.txt#數據庫中的共同列。
common-outputs.txt #數據庫中的共同輸出。
common-tables.txt #數據庫中的共同表。
keywords.txt #數據庫中的共同關鍵詞。

smalldict.txt #數據庫中的字典。
user-agents.txt #進行請求時的瀏覽器代理頭。

 

0x11sqlmap\udf

以下的文件在受害者機器上運行的數據代碼,而不是在我們攻擊者的及其上執行的。

mysql #包括linux和windows的lib_mysqludf_sys.dll_,均有32位和64位。
postgresql #包括linux和windows的lib_mysqludf_sys.dll_,均有32位和64位。
README.txt #該文件夾的功能說明。

 

0x12sqlmap\waf

該文件夾有44個腳本分別對44種WAF進行檢測。例如360,綠盟WAF,modsecurity.,百度,fortiweb,cloudflare。由此可見老外對國內的WAF也是有了解的,可見他們也會悄悄對國內的WAF進行繞過。具體WAF探測如下:

360.py airlock.py anquanbao.pybaidu.pybarracuda.pybigip.py binarysec.pyblockdos.py ciscoacexml.py cloudflare.py datapower.py denyall.py dotdefender.py edgecast.py expressionengine.py fortiweb.py hyperguard.py incapsula.py isaserver.py jiasule.py knownsec.py kona.py modsecurity.py netcontinuum.py netscaler.py newdefend.py nsfocus.py paloalto.py profense.py proventia.py radware.py requestvalidationmode.py safe3.py safedog.py secureiis.py senginx.py sucuri.py teros.py trafficshield.py urlscan.py uspses.py varnish.py webappsecure.py webknight.py

 

0x013sqlmap\xml

各種信息的xml記錄

banner # 各種數據及其相關數據的標志XML記錄。例如:cookie.xml generic.xml mssql.xml mysql.xml oracle.xml postgresql.xml server.xml servlet.xml sharepoint.xml x-aspnet-version.xml x-powered-by.xml
payloads #布爾、錯誤、內聯查詢、堆查詢、延時盲注、聯合查詢等六種注入類型的攻擊注入檢測載荷。這點很重要,sqlmap是否能夠檢測到注入點,就靠這個載荷了。
boundaries.xml #邊界記錄文件。
errors.xml #錯誤顯示的xml文件。
livetests.xml #測試存活的xml記錄文件。
queries.xml #查詢記錄的xml文件。
sqlmap.xsd #sqlmap的 XSD是指XML結構定義 ( XML Schemas Definition ) 。

 

 

0x14 README.md

 

這個是一個說明文件,簡要地指導我們下載、安裝和使用sqlmap,該文件包含多種語言版本的安裝下載使用介紹說明,也是很有用的一個幫助文件。在這里,你可以找到簡要的中文說明!!!

 

0x15 sqlmap.conf

這是sqlmap的配置文件,例如各種默認參數(默認是沒有設置參數、可以設置默認參數進行批量或者自動化檢測)

 

0x16sqlmapapi.py

接口文件,可以將sqlmap集成到其他平臺上。如burp等,到底有沒有安全廠商把它集成到他們自己的產品中去昵?_?

 

 

0x17 sqlmap.py

sqlmap 的主程序,里面可以進行調用各種參數和在終端顯示各種幫助信息。拿個找個注入報個烏云,找個賬號啊!^^**__**^^

如果您喜歡本博客,歡迎點擊圖片定訂閱到郵箱填寫您的郵件地址,訂閱我們的精彩內容:

正文部分到此結束

文章標簽: sqlmap分析

版權聲明:若無特殊注明,本文皆為( mOon )原創,轉載請保留文章出處。

也許喜歡: «BurpSuite 實戰指南 | burpsuite_pro_v1.7.11破解版(含下載地址)»

你腫么看?

你還可以輸入 250/250 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖