千家信息网

sql注入是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"sql注入是什么",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"sql注入是什么"这篇文章吧。认识SQL注入最开始就从最简单的开始
千家信息网最后更新 2026年11月01日sql注入是什么

这篇文章主要为大家展示了"sql注入是什么",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"sql注入是什么"这篇文章吧。

认识SQL注入

最开始就从最简单的开始,进入到less-1开始我们的SQL注入学习之旅。

通过改变http://localhost/sqlilabs/Less-1/?id=3的id值,页面上呈现不同的内容(username,password)。

那么我们就可以猜测在后台中的SQL语句就是根据前台传入的id值来去对应的数据。

那么SQL语句的写法为:

select username,password from table where id=input

判断存在SQL语句

接下来进行做测试,使用以下的语句进行测试:

http://localhost/sqlilabs/Less-1/?id=3 and 1=1http://localhost/sqlilabs/Less-1/?id=3 and 1=2

这个时候页面没有任何的变化,这是不和符合我们预期的结果,因为当id=3 and 1=2时,SQL语句变为select username,password from table where id=3 and 1=2页面应该不会有内容。

确定存在SQL语句

使用了之前的语句不行之后,我们使用如下的语句:

http://localhost/sqlilabs/Less-1/?id=3'

当URl是以上的SQL语句时,页面上显示SQL执行错误信息You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''3'' LIMIT 0,1' at line 1。

其中最关键的错误信息是:

''3'' LIMIT 0,1'

最外层的引号是mysql出错时自动加上的。那么实际的SQL语句是 '3'' LIMIT 0,1。我们发现在我们输入的3'被引号包围了,那么我们之前猜测的select username,password from table where id=input有误,实际的后台的SQL语句应该为:

select username,password from table where id='input'

SQL注入验证

在确定存在了SQL注入之后,同时知道了后台SQL写法,那么此时我们就可以注入自己的SQL注入的代码。

由于我们可以控制id的值,那么最终输入的SQL语句会变为:

select username,password from table where id='input 攻击代码'

此时我们就可以构造如下的payload来验证我们的想法。由于我们的输入是被一对单引号包裹的,所以我们输入的语句必须要能够不被单引号影响。要么闭合单引号,要么注释掉单引号。(可以参考前面的文章)

#闭合单引号id=1 and '1' = '1 # #注释单引号id=1 and 1=1 # 或者 id=1 and 1=1--+

当我们使用上面的这3个payload之后,页面显示的结果是符合预期的。那么我们也可以确定id参数确实是存在SQL注入的。后台的SQL语句的写法也的确是select username,password from table where id='input'。

在确定了SQL语句之后,接下里就是注入SQL注入代码了。

执行SQL注入

使用SQL语句来进行脱裤,这一点是十分关键的。如果仅仅是知道存在SQL注入但是无法脱裤,那么实际上这个漏洞对于该网站的危害性还是很小的。如何构造正确的SQL语句进行脱裤,这一点也是十分重要的,在下一篇文章中将会详细地讲解SQL注入的详细的步骤。

注入类型判断

在本题中的SQL语句就称之为字符型的SQL注入,因为我们的输入在SQL语句执行的过程中被单引号所包括,其实在SQL语句执行中,这个id参数被当做是一个字符类型的数据。除了有字符型的SQL注入,当然还有数字型的SQL语句。那么如何区分这两者呢?

字符型SQL注入

在确定存在SQL语句这节中,当我们输入id=3'是页面的出错信息是 '3'' LIMIT 0,1。我们发现3'被引号所包围,那么说明这个就是一个字符型的SQL注入了。

数字型SQl注入

在less-2中,当我们同样输入id=3'时,页面的出错信息是 ' LIMIT 0,1,那么就说明是一个数字型的注入了同时还存在limit关键字,那么我们猜测less-2中的SQL注入为:

select username,password from table where id=input limit 0,1

以上都可以通过查看源代码的方式来进行验证。

SQL语句判断

但是很多时候我们通过单引号的方式并不能返回sql执行语句的错误信息,就无法通过错误信息得到注入类型。因为很多时候在后台的SQL语句会有各种千奇百怪的写法。

在less-3和less-4中的写法就是如下:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"

在less-3中使用了括号来包裹用户的输入

$id = '"' . $id . '"';$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

在less-4中使用了双引号来包裹用户的输入,那么当你即使加上了单引号进行测试的时候还是无法出发SQL语句执行错误。

所以说很多时候仅仅使用单一的符号进行判断是完全不够的,要多使用不同类型的符号来进行测试的判断,使用包括',",\,(,=,&等等字符,甚至有时候还要使用其他的探查方法,因为你无法判断后台的SQL语句的写法,而且目前很多的网站开发人员已经有了一定的安全意识,可能常规的SQL探查语句也无法使用。关于其他跟多SQL注入的探查语句,网上有很多的资料。

以上是"sql注入是什么"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

语句 引号 输入 页面 写法 后台 字符 信息 内容 时候 字符型 就是 篇文章 类型 错误 测试 代码 关键 包裹 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 小米移动互联网科技园 河南云网互联网络科技有限公司 互联网科技公司的优势 互联网科技公司怎么样 紫鲸互联网科技 互联网科技的未来发展 镁科技互联网资讯平台 联恩商钥互联网科技有限公司 互联网教育科技公司vipkid 上海宁丞科技互联网 和信科技工业互联网 知域互联网科技有限公司大骗子 中国互联网十大科技股排名 玉溪新华互联网科技好不好 易企秀互联网科技是做什么的 科技互联网经济论坛 华人运通互联网科技公司 互联网高科技绘画 互联网 科技节活动 微视频大赛 互联网科技公司税收优惠 朗涯互联网科技 互联网科技论坛 昭通云南众福互联网科技有限公司 苏州铭阳互联网科技有限公司 深圳市罗太互联网科技有限公司 深圳互联网科技的发展 新氧科技和美国互联网有关系吗 萌小萌互联网科技河南有限公司 互联网科技职业技能培训学校
0