| 关键词: 引号 参数 语句 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/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|