ACCESS数据库的注入

学习目标:掌握手工ACCCESS注入的方法,几个常用语句的使用

 

学习要点:ACCESS数据库的注入与MSSQL不同,要得到表名,字段,以及字段的内容不能用MSSQL"暴"的方法直接得到(什么是"暴"以后在戒绍MSSQL注入时会介绍),

ACCESS只能用猜解出表名和字段,然后再猜解出字段的长度,最后把字段的内容从第一位到第N位一个个猜解出来,采用的猜解方法类似玩一个游戏猜大小,

比如一个数字,猜是否大于100如果不是,刚猜是否大于1,如果为正确,那么再猜是否大于50,如果正确,则再猜是否大于80,一直这样猜下去,这种猜解字段内容的方法,

被称为"折半猜解法".

 

第一步,确定注入点:

用' 或者1=1 1=2检测

 

第二步,猜解表名

用 and exists (select * from [admin]) 检测是否存在ADMIN表,ADMIN这个表名可以替换成其它的表名进行猜解,如果存在该表名返回结果为正常,如果不存在则返回为出错,

 

第三步,猜解某表名中存在的字段

and exists (select top 1 [name] from [admin])    前面[name]方括号中的NAME可以换成你要查询的字段名,后面ADMIN则是要查询的表名,

这一句的意思就是查询在ADMIN表中是否存在NAME字段,和上面的一样,如果存在返回页面为正常页,如果不存在,则是出错页面.

 

第四步.猜解字段的长段

and (select top 1 len(username) from Admin)>0  LEN参数提取字段长度()内的USERNAME是字段名,>0可以换成>1.>2直到猜中字段的长度

 

第五步,折半法猜出--重为关键的一环

and (select top 1 asc(mid(username,N,1)) from Admin)>0  猜解第N位的ASCII码 >0取值从负数到正数都有可能,当然常见的密码都是数字加字母的组和,

他们的ASCII值在0-128之间,将值替换为这之间的值,如果正确,则返回正常页面,如果不是责返回出错,将N分别替换为1 2 3 4... 反复猜解即可得出字段每一个位数的值而得到密码

posted @ 2011-04-27 11:35  WHaa_(T_T)  阅读(269)  评论(0编辑  收藏  举报