基础网络攻防之SQL注入

幸运草 2020年3月30日21:16:00安全防范评论阅读模式
SQL,全称Structured Query Language

译为结构化查询语言

是一种特殊目的的编程语言

是一种数据库查询和程序设计语言

SQL语言的主要功能是

同各种数据库建立联系,进行沟通

这一期基础网络攻防

我们的谈谈SQL注入攻击

 
01

什么是SQL注入?

基础网络攻防之SQL注入
SQL注入是黑客

对数据库进行攻击的常用手段之一

随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。不法分子可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

2016年多家影视网站被曝会员信息泄露便是通过提交数据库查询代码获取的。

02

SQL注入原理

基础网络攻防之SQL注入
不法分子可以在参数中写入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为,成因可以归结为以下两个原因叠加造成的:

① 程序编写者在处理应用程序和数据库交互时,使用字符串拼接的方式构造SQL语句。

② 未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL查询语句中。

03

SQL注入的产生原因

基础网络攻防之SQL注入
根据技术原理来看,SQL注入的产生原因通常表现在以下几方面:

① 不当的类型处理;

② 不安全的数据库配置;

③ 不合理的查询集处理;

④ 不当的错误处理;

⑤ 转义字符处理不合适;

⑥ 多个提交处理不当。

04

SQL注入攻击实施

基础网络攻防之SQL注入
SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作。程序没有细致地过滤用户输入的数据是导致非法数据侵入系统的主要原因。

基础网络攻防之SQL注入
SQL注入攻击会导致出现拖库、撞库等数据库安全风险。它是数据库安全攻击手段之一,可以通过数据库安全防护技术实现有效的防护。

拖库是指黑客盗取了网站的数据库。

撞库是指黑客用拖库获得的用户名和密码在其它网站批量尝试登陆,进而盗取更有价值的东西。

05

SQL注入的危害

基础网络攻防之SQL注入
1

数据库信息泄漏

数据库中存放的用户的隐私信息的泄露。

2

网页篡改

通过操作数据库对特定网页进行篡改。

3

网站被挂马,传播恶意软件

修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

4

数据库被恶意操作

数据库服务器被攻击,数据库的系统管理员帐户被窜改。

5

服务器被远程控制,被安装后门

经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

6

破坏硬盘数据,瘫痪全系统。

06

SQL注入检测

如何判断有没有被SQL注入漏洞,通常有以下方法:

单引号判断法

在参数后面加上单引号,比如:http://xxx/abc.php?id=1'。如果页面返回错误,则存在 SQL注入。

数字型判断

当输入的参 x 为整型时,通常 abc.php 中 SQL语句类型大致如下:select * from <表名> where id = x。

这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

Url 地址中输入 http://xxx/abc.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。

Url 地址中继续输入 http://xxx/abc.php?id= x and 1=2 页面运行错误,则说明此SQL 注入为数字型注入。

字符型判断

当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下:select * from <表名> where id = 'x'。

这种类型我们同样可以使用 and '1'='1 和 and '1'='2来判断:

Url 地址中输入 http://xxx/abc.php?id= x' and '1'='1 页面运行正常,继续进行下一步。

Url 地址中继续输入 http://xxx/abc.php?id= x' and '1'='2 页面运行错误,则说明此 SQL注入为字符型注入。

基础网络攻防之SQL注入
07

SQL注入的防护

基础网络攻防之SQL注入
① 不要轻易信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。

② 不要使用动态拼装sql,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

③ 不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

④ 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

⑤ 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。

⑥ SQL注入的检测方法一般采取辅助软件或网站平台来检测,软件可以采用SQL注入检测工具jSky,网站平台有亿思网站安全平台检测工具、MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。

本文来源于:基础网络攻防之SQL注入-变化吧
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 加入Q群
  • QQ扫一扫
  • weinxin
幸运草

发表评论