SQL注入相关

1、SQL注入介绍

1)概念

什么是SQL注入呢?

        指Web应用程序对用户输入的数据的合法性没有做判断,前端传入后端的参数是可控的,并且输入的参数可以带入数据库中查询。攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。

 2)原理

首先,SQL注入漏洞的产生需要满足两个条件:

  • 前端传给后端的参数内容是用户可以控制的。
  • 传入的参数拼接到SQL语句,并且带入到数据库中查询。

当传入的id参数为1'时,数据库执行的代码如下

select * from users where id = 1'

若是显示报错页面,便可以确定 ' 被带入到数据库中,因为 ' 不符合数据库的语法规范,所以会报错。初步判断 id 参数存在SQL注入漏洞,攻击者可以进一步拼接SQL语句进行攻击,致使数据库信息泄露,甚至获取服务器权限的行为等。

2、MySQL注入相关知识点

1)MySQL4与5的区别

  •  MySQL 4版本数据库由于存在着字符转义与不支持字句查询的情况,因此在注入攻击上存在着很大的局限性,只能采用类似Access的方法进行查询猜解。
  • MySQL 5版本由于information_schema库的存在,注入攻击相对来说方便了许多。

        在information_schema库中,有三个表名需要我们记住。分别是SCHEMATA、TABLES和COLUMNS。

        SCHEMATA表存储该用户创建的所有数据库的库名,记录数据库库名的字段名为SCHEMATA_NAME。

        TABLES表存储该用户创建的所有数据库的库名和表名,字段名分别是TABLE_SCHEMATA和TABLE_NAME。

        COLUMNS表存储该用户创建的所有数据库的库名、表名和字段名,分别是TABLE_SCHEMATA、TABLE_NAME、COLUMNS_NAME。

2)MySQL常用查询语句

在不知道任何条件时,语句如下。

SELECT 要查询的字段名 FROM 库名.表名

在知道一条已知条件时,语句如下。

SELECT 要查询的字段名 FROM 库名.表名 WHERE 已知条件的字段名='已知条件的值'

  • 在知道两条已知条件时,语句如下。
SELECT 要查询的字段名 FROM 库名.表名 WHERE 已知条件1的字段名='已知条件1的值' AND 已知条件2的字段名='已知条件2的值'

3)需要记住的函数

  • database():当前网站使用的数据库。
  • version():当前MySQL的版本。
  • user():当前MySQL的用户。

4)注释符

        # 或 --空格 或 /**/。

        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值