SQL注入(二) #Web安全攻防

我们要怎么构造SQL注入语句呢?

一般情况下,开发人员可以使用 动态SQL语句 创建通用,灵活的应用。动态SQL语句是在执行过程中构造的,它根据不同的条件产生不同的 SQL语句。当开发人员在运行过程中需要根据不同的 查询标准 决定提取什么 字段 。或者根据不同的条件选择不同的查询表时,动态的构造SQL语句会非常有用。

SQL注入按照不同的分类方法可以分为很多种,如: ①.报错注入 ②.盲注 ③.Union(联合)注入 等。。。

SQL注入漏洞的产生需要满足以下两个条件:

①.参数用户可控:前端传给后端的参数内容是用户可以控制的。

②.参数代入数据库查询:传入的参数拼接到SQL语句,且代入数据库查询。

下面介绍一下MySQL注入的知识点:

在MySQL 5.0版本之后,MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中,我们要记住三个表名。分别是 ①.SCHEMATA ②.TABLES ③.COLUMNS

<!--那么有人就要问了,什么是数据库:简单来说, 数据库是一个保存有组织数据的容器,比如说电话薄,图书馆的管理系统等等!

数据库管理软件和数据库是不相同的,数据库指的是保存有组织数据的容器,而数据库管理软件是操纵和创建数据库的工具,是Database Manager Software,简称DBMS。我们使用DBMS来创建和管理数据库,管理可以是添加,删除,更改查询数据库的内容的【简称 增,删,改,查】,市面上常见的DBMS有MySQL,oracle,SQL server等等。虽然是不同的SQL软件,但使用的都是SQL语言。SQL语言是一门结构化查询语言,它几乎适用于所有的数据库,SQL上手非常容易,它的语句是有描述性很强的英语单词构成。数据库是由一个一个的表构成的,数据库里面的表是某种特定类型数据的结构化清单,但是需要注意的是,数据库里面表的名字不能重复,表中的列都有相应的数据类型,它限制列中储存的数据类型,就比如一列是写的数值类型(就是数字)就不能写文字类型(就是字母啥的)。这样做的好处就是为了帮助后续去管理数据库。比如说:优化磁盘, 使用提高效率帮助排序等等。

还有一个就是主键的概念,这个说起来比较的抽象,主见是为了方便管理数据库而存在的,没有主见的话要删除,其中特定的话就会非常的困难。例如:

 

这里身份证号就是主键,因为里面有两个叫陈衣的男人,我们通过性别和姓名都分别不出来这两行的区别,但能通过身份证号码能分辨出来,所以身份证号码就是主键。--!>

Union注入攻击:

下面我们用Burpsuite来演示其用法:

我们用的Union注入攻击的测试地址:http://127.0.0.1/union.php?id=1。

访问该网址时,我们开启Burpsuite的proxy功能【代理模块】和request【请求模块】:点击send,我们就会收到response【回答模块】。如图:

 

<!--其实这个网址如果打不开,我们可以这样做:

First,打开控制面板,找到程序,双击打开。

Secondly,

 

点击程序与功能中的,启动或关闭Windows功能,然后:

​然后把这两个开启,就可以顺利打开 127.0.0.1 了。

​【要下载哦!!!】 --!>

如果我们在URL后添加一个单引号,再次访问,页面反回的结果与id=1的结果不同。如图:

​【长度不同,内容也发生了一些变化!!!】

访问id=1 and 1=1,由于and 1=1为真,所以页面应返回与id=1相同的结果【可能不同的网站有不同的反回结果】,访问id=1 and 1=2,由于and 1=2为假,所以页面应反回与id=1不同的结果。

如果是这样的话,我们是不是就可以得出一个结论:该网站可能存在SQL注入漏洞。

接着,使用 order by 1-99语句查询该数据表的字段数量,可以理解为 order by =1-99,如访问 id=1 order by 3,页面返回与id=1相同的结果。 但如果访问id=1 order by 4,页面返回与id=1不同的结果,则字段数为3【也就是说字段数从3和4之间出现了分歧】。

<!--但是要声名一点行,如果就是在我们刚开始注入的时候,我们发现无论怎么改变我们的id语句,它所返回的值都是一样的话,那么就说明此网站没有注入点,那么就可能不存在SQL漏洞,我们也就没有办法使用SQL注入!-->

其实还有个比较简单的方法【不用软件Burpsuite】{可能这个网站比较适合老网站,由于技术的更新,可能这种方法以经快被淘汰掉了}:就是我们在搜索框上注入【就是直接在搜索框上写】,这种方法最大的问题是,我们看不到网站返回的代码【就是Request】,但是我们可以直接看到网站返回后所呈现的图片内容,看看是否有网页报错,如果网页报错,那就证明有注入点。如果网页没有报错,就证明在这个网页上,我们使用的这种方法不可行!!! 额,其实这些方法的本质都一样,就是用户输入的数据,有没有被当做SQL语句的参数去执行!

<!--额,剩下的,下次在讲--!>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

》(。・ω・。)ノ♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值