sql注入_qq机器人sql注入-程序员宅基地

用SQL(结构化查询语言)对SQL数据库(大多数Web应用都使用SQL数据库来存放应用程序的数据)进行“增删改查”。
一、可SQL注入的原因
1.允许数据库命令和用户数据混杂在一起的。远程用户不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令,SQL注入使攻击者绕过认证机制,损害数据库的内容。
2.动态生成Sql语句时没有对用户输入的数据进行判断是Sql注入攻击得逞的主要原因

二、SQL注入的方式:提前终止文本字符串,追加新命令
1) 通过构建特殊的输入(大都是SQL语法里的一些组合)作为参数
1.插入到Web表单递交
2. 输入域名
3. 页面请求的查询字符串
2)提前终止文本字符串
用户输入变量时,用一个分号结束当前的语句,然后再插入一个恶意SQL语句。由于插入的命令可能在执行前追加其他字符串,因此常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句为注释,故后续的文本将被忽略,不被编译与执行。
3)攻击方式分类
1.直接注入式攻击法:直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量
2.间接的攻击方法:将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码
4)Sql 注入漏洞可分为 2 种类型——数字型、字符型。

三、1) SQL分类:
  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
  DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
2)SQL查询语句
Select [包括ALL(所有,默认)distinct(去重,针对查询结果的整条记录而言)] 字段列表[字段别名]/* from 数据源 [where 字句:where是唯一一个从磁盘开始拿数据的时候就开始判断条件,从磁盘取出一条记录,开始进行where判断,判断结果成立,则取出结果保存到内存,否则放弃。] [group by分组子句:分组从而进行统计操作,而不是为了展示(展示的时候,只会展示分组记录的第一条记录),分组时,一般会结合使用count()、max()、min()、avg()、sum()函数。 ][having 子句:在内存中对数据进行group by分组之后的结果进行处理,只能通过having。][order by 子句:对数据进行排序操作,根据某个字段进行升序或者降序排序。(进行多字段排序的时候,先根据某一字段进行潘旭,然后在排序好的内部再按照某字段进行排序)][limit 子句:限制结果的数量。Limit 偏移量 记录条数;];
3)几个高级查询运算词
A: UNION 运算符
  UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
  EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
  INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
  注:使用运算词的几个查询结果行必须是一致的。
使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
  全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
2) 验证用户是否存在的SQL语句为:
用户名’and pswd='密码
如果在用户名字段中输入: 'or 1=1或是在密码字段中输入:'or 1=1将绕过验证,但这种手段只对只对Statement有效,对PreparedStatement无效。相对Statement有以下优点:
1.防注入攻击
2.多次运行速度快
3.防止数据库缓冲区溢出
4.代码的可读性可维护性好

四、防止SQL注入
1.采用预编译语句集
原理:sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析,准备,因此也就避免了sql注入问题.
2.使用正则表达式过滤传入的参数
检测SQL meta-characters的正则表达式 :

/(%27)|(\’)|(--)|(%23)|(#)/ix

修正检测SQL meta-characters的正则表达式 :/((%3D)|(=))[^\n]*((%27)|(\’)|(--)|(%3B)|(?)/i

典型的SQL 注入攻击的正则表达式 :/\w*((%27)|(\’))((%6F)|o|(%4F))((%72)|r|(%52))/ix

检测SQL注入,UNION查询关键字的正则表达式 :/((%27)|(\’))union/ix(%27)|(\’)

检测MS SQL Server SQL注入攻击的正则表达式:

/exec(\s|+)+(s|x)p\w+/ix

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45117395/article/details/102556944

智能推荐

Smbclient的移植到嵌入式设备(arm,montavista,arm_v5t_le-gcc)_libsmbclient库移植-程序员宅基地

文章浏览阅读2.8k次。经过多番折腾,在用多种方法尝试编译和移植不同版本的samba软件之后,找到一种可以顺利将smb协议应用到arm+arm_v5t_le-gcc环境中的方法。其步骤大致如下:1.下载源代码 从http://www.samba.org 下载 samba-2.2.7a.tar.gz 并解压。因为按照本操作文档执行,可以移植成功2.X.X版本。当移植3.x.x版本时,由于系统库的不_libsmbclient库移植

团队作业9——项目验收与总结-程序员宅基地

文章浏览阅读113次。1、项目的测试情况参考alpha阶段的测试要求回归测试:在修改/增加功能的情况下,请用回归测试,重新运行alpha版本的测试用例,确认beta版是否存在“退化”alpha版本的基本界面:beta版本的基本界面:2、项目的发布说明,主要包含:本版本的新功能:添加了记分功能软件对运行环境的要求:JAVA运行环境(JDK和JRE)系统已知的问题和限制::没有实际在32位的机器上运行过..._项目验收报告 应用数据部署等方面的架构设计

如何处理分类中的训练数据集不均衡问题_训练数据不平衡-程序员宅基地

文章浏览阅读2.9k次。本文参考自:http://blog.csdn.net/heyongluoyao8/article/details/49408131,有删改。 什么是数据不均衡? 在分类中,训练数据不均衡是指不同类别下的样本数目相差巨大。举两个例子: ①在一个二分类问题中..._训练数据不平衡

LVS 负载均衡群集 ---------- NAT(地址转换)模式_192.168.100.184-程序员宅基地

文章浏览阅读1.6k次。LVS 负载均衡群集 -------等你观看噢~_192.168.100.184

送给Mickey的礼物_c++送给mickey的礼物 题目描述 mickey要过生日了,kitty想摘点花生送给mickey-程序员宅基地

文章浏览阅读534次。题目描述Mickey要过生日了,Kitty想摘点花生送给Mickey。她来到一片有网格状的矩形花生田(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Kitty只能向东或向南走,不能向西或向北走。请帮助Kitty计算一下最多能够摘到多少颗花生?输入格式输入文件的第一行,是一个整数T,表示测试数据的组数,1≤T≤100对于每组测试数据:第一行,是整个整数,分别代表花生苗的行数R和列数C(1≤._c++送给mickey的礼物 题目描述 mickey要过生日了,kitty想摘点花生送给mickey。她

TCP/IP协议 - 三次握手四次挥手(入门易懂版)_6、三次握手、四次挥手-程序员宅基地

文章浏览阅读4.3k次,点赞9次,收藏26次。握手通俗理解为两个人见面Say Hai,客户端和服务端建立连接挥手就可以理解为两个人结束会面,要Say Goodbai,客户端和服务端断开连接要了解什么是三握四挥,必须要了解一个重要的知识点:什么是TCP报文格式,也就是三握四挥中传送的内容是什么,遇到什么格式才能触发服务端和客户端的交流。TCP报文格式TCP报文是TCP层传输的数据单元,也叫报文段从上向下依次来看:1.端口号:用来标识同一台计算机的不同的应用进程,比如熟悉的80端口,3306..._6、三次握手、四次挥手

随便推点

Python Django中 excel转成html 可以直接预览_python django中 excel转成html 可以直接预览-程序员宅基地

文章浏览阅读2.5k次,点赞5次,收藏15次。上篇文章写了Python怎么预览Excel, 因为我Django是Python常用的开发框架,那在Django 中怎么预览呐?话不多说,直接贴代码URL:re_path('load_excel/', views.load_excel, name='load_excel'),VIEWS:from Personnel.models import Contractimport pandas..._python django中 excel转成html 可以直接预览

三分钟,让你弄清楚Python中函数的括号使用_python.()什么时候加括号-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏14次。一直以来对python中函数括号的使用,有点分不清楚,到底什么时候用括号,什么时候不用括号,造成了很大困惑。执行结果:根据结果来分析:1、 x = aaa aaa是一个类名,后面没加括号,打印结果 ,表明x是个类2、 由于没有加括号,类没有实例化,y为公有属性,因此x.y打印的结果为you3、foo为aaa类中的函数,称为方法或属性,同时 foo后面也未加括号,打印..._python.()什么时候加括号

hi3519av100改用传参设备树方式启动_hi3559a 网口设备树-程序员宅基地

文章浏览阅读744次。hi3519av100改用传参设备树方式启动文章目录hi3519av100改用传参设备树方式启动使用简单的测试设备树进行分析编译与反编译u-boot获取设备树内容u-boot传递设备树内容u-boot传递设备树内容 `linux`内核启动需求的`Setup boot data`时可以通过两种方式:Setup the kernel tagged listSetup the device treelinux-4.9.37/Documentation/arm/Bootinghi3519av1_hi3559a 网口设备树

html设置背景图片颜色,CSS设置背景图片及背景颜色示例-程序员宅基地

文章浏览阅读7.1k次。1.设置背景颜色background-color是CSS中的背景颜色属性,这个属性用于为HTML元素设定背景颜色,可以设置整个网页的背景颜色,也可以设置网页中某部分元素的背景颜色,比如表格背景颜色、层背景颜色等等。示例1:这段代码设置整个网页的背景颜色为蓝色#0080FFtype="text/css">2.设置背景图片(1)background-image是CSS中的背景图片属性,这个属性用于为H..._html设置两个背景颜色如何区分

用Python读取excel文件的指定单元格_python 查找excel内容所在的单元格-程序员宅基地

文章浏览阅读1.2k次,点赞11次,收藏10次。常用的读取Excel文件数据的Python库有3种:(1)xlrd(3)pandas读取xlsx或者xlsm文件,选择openpyxl和pandas提供的接口;如果是xls文件,可以选择xlrd。这里记录一下我在读取.xlsm文件过程中遇到的问题、以及验证通过的代码。_python 查找excel内容所在的单元格

【捷克生活点滴】—系列之:毕业感言_捷克大学毕业难 原创-程序员宅基地

文章浏览阅读350次。 这一天,我等了已经很久了! 终于等到实习完了!这一年,说长不长,说短不短,不过马马虎虎总算过完了,可以回学校办理毕业了! 这一天,我已经盼了很久了!在学校这个漫长的温室里,我生活了整整14年,这一天后,我总算彻底自主自由了! 学校这个机构,不像商店和谈生意,还有价钱可讲,有商量的余地,可在学校,学校说要交多少费用,你就不得不交,而且一分都不_捷克大学毕业难 原创