首页 网络安全 网站防护 查看内容

web安全之SQL注入关联知识点

2019-11-25 09:53 |来自: 互联网 1052 0

摘要: 本节主要介绍SQL注入中常用的方法函数及对注入点的判断,为后面盲注等内容做个铺垫,还是以mysql为例。mysql基础知识点基本运算符主要涉及到算数运算、比较运算、逻辑运算、位运算以及注释符,在上一篇的案例中其实也用到了该内容字符串处理 ...
关键词: 引号 参数 语句 SQL 字符串 括号 语法 方法 34 id

继续上一篇内容,在上一篇文章中以实例介绍了SQL注入的原理,本节主要介绍SQL注入中常用的方法函数及对注入点的判断,为后面盲注等内容做个铺垫,还是以mysql为例。

mysql基础知识点

  • 基本运算符

主要涉及到算数运算、比较运算、逻辑运算、位运算以及注释符,在上一篇的案例中其实也用到了该内容

  • 字符串处理

用于对字符串处理,包括字符串连接、字符串比较、字符串截取等功能函数,在前一篇文章中获取数据库信息时用到过字符串连接函数group_concat()

  • 编码转换及其它方法

主要用于对字符及字符串进行编码转换,该方法在盲注中会经常用到;另外还有类型转换方法,以及在基于时间盲注中会用到的延时函数,还有在盲注中可能会用到的条件判断等方法,以及mysql中对文件进行操作的方法等。

SQL注入测试语法

在测试SQL注入时,我们需要推测后端对SQL语句的处理情况,进而构造SQL注入判断语句,例如,假设服务端从客户端获取参数 $id 带入数据库查询,那么后端在处理时,可能会有如下情况

  • 直接拼接

直接将参数 $id 带入SQL语句查询

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

这时,当提交参数 id=1',SQL语句的报错形式如下,那么我们的构造语法可为 or 1=1--+

  • 括号包围

服务端将获取的参数利用括号包围带入查询

$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

这是,当提交参数 id=1',SQL语句的报错形式类似,我们测试的构造语法可为 ) or 1=1--+

  • 单引号包围

服务端将获取的参数利用单引号包围带入查询

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

这是,当提交参数 id=1',SQL语句的报错形式如下,我们的构造语法可为 ' or 1=1 --+

  • 单引号加括号包围

服务端将获取的参数利用单引号加括号包围带入查询

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

这是,当提交参数 id=1',SQL语句的报错形式如下,我们的构造语法可为 ' ) or 1=1 --+

  • 双引号包围

服务端将获取的参数利用双引号包围带入查询

$sql="SELECT * FROM users WHERE id="$id" LIMIT 0,1";

这是,当提交参数 id=1",SQL语句的报错形式类似上述单引号报错,单引号变双引号即可,那么我们的构造语法可为 " or 1=1--+

  • 双引号加括号包围

服务端将获取的参数利用双引号加括号包围带入查询

$sql="SELECT * FROM users WHERE id=("$id") LIMIT 0,1";

这是,当提交参数 id=1",SQL语句的报错形式如下,那么我们的构造语法可为 " ) or 1=1 --+

综上,在测试注入点的时候,需要推测后端的处理语句进而变换构造测试向量。在测试时可以灵活运用前面提到的基本运算符及方法函数。同时需要熟练掌握常见的字符串处理方法,在后面介绍盲注的时候会大量用到,本节内容到此为止,后面内容将以实例介绍SQL盲注。

本文出处: https://www.toutiao.com/a6762763715600187916/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部