抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

什么是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注入的网站
  • 自己搭建靶场
    • sqli-labs (本系列会介绍如何搭建)
    • DVWA
      这两个项目都在GitHub上开源,搭建教程可以去google或者CSDN搜索。

再次强调!!!千万不要在未授权的情况下尝试SQL注入!!!

SQL注入的分类

​ 通过不同的分类方式,SQL注入被分为许多不同类型。但笔者认为如何分类并不十分重要,关键是要掌握每种SQL注入的原理。当然,还是要简单介绍一下SQL注入的分类。

  • 按照是否回显(在页面上显示查询的报错信息)可以分为:

    • 显注

    • 盲注

  • 按照请求方式(服务器获取用户提供信息的方式)可以分为:

    • GET型注入
    • POST型注入
    • Cookie型注入
    • HTTP Header型注入
  • 按照插入到查询语句中的参数类型可以分为:

    • 数值型注入(传入的参数为数值)
    • 字符型注入(传入的参数为字符串)
      • 单引号字符型注入(字符串用单引号包裹:’输入的字符串’)
      • 双引号字符型注入(字符串用双引号包裹:”输入的字符串”)
      • 带括号的注入
        • 数值+括号:(输入的数值)
        • 单引号字符串+括号:(‘输入的字符串’)
        • 双引号字符串+括号:(“输入的字符串”)

可以通过RSS订阅本篇博客,下一期将带大家搭建靶场环境🤓🤓🤓

评论