什么是SQL注入?
要了解什么是SQL注入,我们首先要知道SQL是什么。SQL,全称Structured Query Language,即数据库的结构化查询语句,用来从数据库中查询内容。
绝大多数网站都有一个数据库,比如我们在网购平台搜索商品的时候,其实就是在从网站的数据库中查询我们想要的内容,这个过程就用到了SQL语句,只不过是在设计好的语句中插入了我们输入的值。
但是如果一个web应用程序对用户输入的内容不进行严格的筛查和过滤,用户就有可能通过改变输入的值、添加SQL语句执行不被授权的操作,从而查看数据库的敏感信息或者在服务器上植入木马等。这个过程就被称为SQL注入
学习SQL注入需要什么基础?
显然,要学会基本的SQL语句。目前大多数网站使用的都是开源可以白嫖的MySQL数据库,因此建议学MySQL。当然,不同的数据库有不同的特性,但是绝大部分SQL语句都是通用的,因此学好一个数据库,其他的基本上也就没问题了。学的时候有几个重点:掌握好“增删查改“;MySQL自带的information_schema数据库中tables, columns, schemata表要有一个大概的了解(之后学习SQL注入的时候经常要查询其中的内容)。存储引擎、事务、数据库设计之类的可以不用深入学甚至不学。
其他的一些基础比如cookie,比较零碎,可以学到的时候再进行学习。
如何学习(实践)SQL注入?
SQL注入是一项技术,是技术就需要实践。但我们知道,利用SQL注入攻击他人的网站是违法行为,如果严重甚至构成犯罪。那么想要实践,就剩下两种方案:攻击用于学习SQL注入的网站;攻击自己搭建的测试网页。
- 用于学习SQL注入的网站
- 自己搭建靶场
再次强调!!!千万不要在未授权的情况下尝试SQL注入!!!
SQL注入的分类
通过不同的分类方式,SQL注入被分为许多不同类型。但笔者认为如何分类并不十分重要,关键是要掌握每种SQL注入的原理。当然,还是要简单介绍一下SQL注入的分类。
按照是否回显(在页面上显示查询的报错信息)可以分为:
显注
盲注
按照请求方式(服务器获取用户提供信息的方式)可以分为:
- GET型注入
- POST型注入
- Cookie型注入
- HTTP Header型注入
按照插入到查询语句中的参数类型可以分为:
- 数值型注入(传入的参数为数值)
- 字符型注入(传入的参数为字符串)
- 单引号字符型注入(字符串用单引号包裹:’输入的字符串’)
- 双引号字符型注入(字符串用双引号包裹:”输入的字符串”)
- 带括号的注入
- 数值+括号:(输入的数值)
- 单引号字符串+括号:(‘输入的字符串’)
- 双引号字符串+括号:(“输入的字符串”)
可以通过RSS订阅本篇博客,下一期将带大家搭建靶场环境🤓🤓🤓
条评论