web安全—sql注入漏洞

1.形成原理:由于开发人员在设计sql语句查询时,没有对用户输入的内容进行过滤,导致一些sql语句可以由客户端输入到服务器,从而造成了sql注入漏洞。

2.分类:从大方面说sql注入漏洞,就分为俩大类:数字型注入和字符型注入。网上说的post注入,cookie注入,insert/update/delete注入等等,甚至是盲注都是那俩大类的延伸。

3.数据库分类:现在大部分的网站的数据库主要是:access,mysql,oracle。对于不同的数据库其注入的语法是不同的,思路也不同。但是其原理都是大同小异的,关键在于如何闭合语句

一.Access数据库注入

1.注入思路:对于access数据库,一般和asp网站一起使用。在注入时可以简单一个字概括·:“猜”!猜表名,判断字段数,猜字段名,爆出字段内容。

2.实列演示:本实列是在VMware中自己搭建的access注入的靶场。

(1)判断注入点:

           首先进入具有access注入的网站,如图。

   在id=1513 后面进行注入点的判断:and 1=1;and 1=2。发现在输入 and 1=1 会显示正常,而 and 1=2会报错。所以可判断有注入点。

(2)猜测表名

        利用“select * from 推测的表名”这条语句和exists()函数进行表名的猜测。

   这里列出几个常见的表名:admin,user,adminuser,manager,manager_user等等。

这里只列出了几个,网上有很多,感兴趣的话可以自行搜索。这里在补充一句,防止access注入比较好的方法,就是把表名,字段名设成比较生僻的名称,这样无论是手工注入还是用工具都不好猜解。

好,我们在注入点猜解表名,发现当表名为admin,页面没有返回异常。所以这个数据的表名就是admin。

(3).猜解字段名

 和猜解表名一样,都是利用了exists()函数进行猜解。语句为:”select 猜解的字段名 from 刚才猜解到的表名(admin)”

经过猜解,发现当字段名为:admin和password是页面返回正常。

(4)判断字段数

 利用order by 函数。

  语法: order by 数字

  Order by函数的作用是按照by后面的条件升序排列,by后面可以是字段名也可以是字段在表中的列数。所以利用order by函数,就可以判断表中的字段数。

经判断,admin表中的字段数为22,如图。

(5)判断可显字段。

   Union select 联合查询。

用法:当使用union联合查询是可将union前面的内容和后面的内容一起输出。

注意:union前后的字段数必须相同。

所以 我们构造这条语句:union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin.

发现页面中3,15俩个数字显示出来了。如图:

(6)爆出字段内容

在可显字段上换成字段的名即可。

union select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from admin.

如图:

至此管理员的用户名和密码就爆出来了

猜你喜欢

转载自www.cnblogs.com/Da4er/p/10689696.html