知道ACCESS
数据库注入的一些基本规律,就可以通过一些相关语法来进行手动注入了。
第一步:确定注入点
用“ and 1=1”或者“ and 1=2”来确认。注意:and两边各有一处空格。
如果检测过后,返回错误信息,那么就证明这个网站有注入漏洞。
第二步:猜解表名
用:and exists (select * from [admin])
检测是否存在admin表,admin这个表名可以替换成其它的表名进行猜解,如果存在该表名返回页面结果为正常,如果不存在则返回为出错。
第三步:猜解某表名中存在的字段
语法:and exists (select top 1 [name] from [admin])
前面[name]大括号中的name可以换成你要查询的字段名,后面admin则是要查询的表名,这一句的意思就是查询在admin表中是否存在name字段,和上述一样,如果存在返回页面为正常,如果不存在,则返回出错页面。比如说你要查密码字段名,则要把[name]改成pass或者password(可以通过尝试访问界面来确认是否存在该字段)。
第四步:猜解字段的长度
语法:and (select top 1 len(username) from Admin)>0
len参数提取字段长度()内的username是字段名,>0可以换成>1、>2直到猜中。继续我们以上的叙述,刚才找的是密码字段,所以可以把(username)(记住username是由小括号括住的)改成password。
第五步:折半法猜出字段--最关键的一环
语法:and (select top 1 asc(mid(username,N,1)) from Admin)>0 猜解第N位的ASCII码>0取值从负数到正数都有可能,当然常见的 密码都是数字加字母的组和,它们的ASCII值在0-128之间,将值替换为这之间的值,如果正确,则返回正常页面,如果不是责返回出错,将N分别替换为1、2、3、4……反复猜解即可得出字段每一个位数的值而得到密码,参数N为字段的位数,如果是(mid(username,1,1)),则查找username字段中的第一位,依此类推。整个语句的最右边“>0”,数字0表示的是ASCII码,并不是真正的字段位数相应的字符。
还是一样,我们继续上述结果,可以把username改为password。
原标题:手工入侵asp+access网站的方法,Sql注入
关键词:ASP