萌新的网安之路---SQL注入篇(1)

SQL注入背景

SQL全称是“结构化查询语言( StructuredQueryLanguage)”, 它是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的功能极强的关系数据库标准语言。

最早是IBM的圣约瑟研究实验为其关系数据库管理系统SYSTEMR开发的一种查询语言,它的前身是SQUARE语言。

SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来, SQL语言得到了广泛的应用。在SQL语言中,不需要告诉SQL如何访问数据库,只要告诉SQL需要数据库做什么。

萌新的网安之路---SQL注入篇(1)_第1张图片

漏洞介绍

SQL注入(SQLInjection)是这样一种漏洞:当我们的Web app在向后台数据库输入SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么恶意访问者就可以构造特殊的SQL语句插入或添加到应用(用户)的输入参数里,直接送到数据库引擎执行,对数据库系统的内容进行直接检索或修改。

SQL注入漏洞可以说是在企业运营中会遇到的最具破坏性的漏洞之一,它也是目前被利用得最多的漏洞。要学会如何防御SQL注入,我们首先要对他的原理进行了解。

如果开发者们一个不小心,或者是编程萌新经验不足,在编写代码时没有对用户的输入数据或者是页面中所携带的信息进行必要的合法性判断,那么攻击者就会利用这个机会提交一段数据库查询代码,根据程序返回的结果,可以得到一些数据库信息。

漏洞危害:

  • 直接就造成数据库中的数据泄露。
  • 如果数据库连接用户具备高权限,则可能导致恶意访问者获取服务器控制。
  • 众多安全事件的切入点。

萌新的网安之路---SQL注入篇(1)_第2张图片

Mysql数据库结构

到了要讲核心原理的地方啦!
Mysql5.0以上版本中,为了
方便管理,默认定义了information_schema数据库,用来储存数据库元信息,其中具有表schemata(数据库名)、tables(表名)、columns(列名或字段名)。而这些就是我们进行sql注入的基石!Oops!

Schemata表中,schema_name字段用来储存数据库名。
Tables表中,table_schema和table_name分别用来存储数据库名和表名
columns表中,table_schema(数据库名)、 table_name(表名)、 column_name(字段名)

功能 查询语句
查库 select schema_name from information_schema.schemata
查表 select table_name from information_schema.tables where table_schema = 表名
查列 select column_name from information_schema.columns where table_name = 表名
查数据 select 库名 from 表名

内置库

内置库 功能
mysql 保存有账户信息,权限信息,存储过程,event ,时区等信息。
sys 包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等)
performance_schema 用于收集数据库服务器性能参数
information_schema(我们要用的) 它提供了访问数据库元数据的方式。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表的数据类型与访问权限等。

注释符:
在mysql中常见的注释符表达式:

  1. ‘井号’...ta就和键盘上的数字3在一起 (这个在注入中用得很勤)
  2. --空格
  3. / 行中间或多个行 /
内联注释: /#! sql语句 /
(只有mysql可以识别,常用来绕过waf)。

例如正常注入:
select * from articles where id = id
使用内联注释注入:
select * from articles where id = -1(让他报错)/*!union*//*!select*/ 1,2,3,4
(这里目前超纲了哈,在后续文章中会介绍der)

我想说

我是一个踏上网络安全路上不久的小白,其实这些文章更像是我的学习笔记,我想把这些分享出来,作为一起努力的小白们的简单知识整理,我是想着在迷茫的道路上如果有同行的同伴拿着点点星光,大家多少眼里也会反射出光芒,应该会稍稍再鼓起勇气继续砥砺前行!

那么今天就到此为止啦~主要就是整理一下sql注入漏洞的相关知识,为之后的注入打下基础,做好准备。
下一篇文章我将会整理sql注入的流程相关知识~敬请期待哦!

请前辈大佬们请多多关照!
如果文章有任何疏忽或错误,请您斧正!蟹蟹!

你可能感兴趣的:(安全,sql,数据库)