🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ![](https://img.kancloud.cn/3d/b9/3db945e2f2960945a64e0ab5509dda79_883x526.png) ## 数值型注入 **前台页面输入的参数是「数字」。** 比如下面这个根据ID查询用户的功能。 ![](https://img.kancloud.cn/c6/af/c6af48df32f4fbc28543c72066f5aaaf_935x257.png) **后台对应的SQL如下,字段类型是数值型,这种就是数值型注入。** ``` select * from user where id = 1; ``` ## 字符型注入 **前台页面输入的参数是「字符串」。** 比如下面这个登录功能,输入的用户名和密码是字符串。 ![](https://img.kancloud.cn/56/be/56be0aef53cf8b2dbaba046d680a8846_394x153.png) **后台对应的SQL如下,字段类型是字符型,这种就是字符型注入。** ``` select * from user where username = 'zhangsan' and password = '123abc'; ``` * **字符可以使用单引号包裹,也可以使用双引号包裹,根据包裹字符串的「引号」不同,字符型注入可以分为:「单引号字符型」注入和「双引号字符型」注入。** ### 单引号字符型注入 **参数使用「单引号」包裹时,叫做单引号字符型注入,**比如下面这个SQL,就是单引号字符型注入。 ``` select * from user where username = 'zhangsan'; ``` ### 双引号字符型注入 **参数使用「双引号」包裹时,叫做双引号字符型注入,**比如下面这个SQL,就是双引号字符型注入。 ``` select * from user where username = "zhangsan"; ``` ### 带有括号的注入 理论上来说,只有数值型和字符型两种注入类型。 **SQL的语法,支持使用一个或多个「括号」包裹参数,使得这两个基础的注入类型存在一些变种。** * 数值型+括号的注入 **使用括号包裹数值型参数,** 比如下面这种SQL。 ``` select * from user where id = (1); select * from user where id = ((1)); 包裹多个括号…… ``` * 单引号字符串+括号的注入 **使用括号和单引号包裹参数,** 比如下面这种SQL。 ``` select * from user where username = ('zhangsan'); select * from user where username = (('zhangsan')); 包裹多个括号…… ``` * 双引号字符串+括号的注入 **使用括号和双引号包裹参数,** 比如下面这种SQL ``` select * from user where username = ("zhangsan"); select * from user where username = (("zhangsan")); 包裹多个括号…… ``` ## 其他类型 除了根据参数的分类以外,还有其他分类方式。 **根据数据的「提交方式」分类:** * GET注入:使用get请求提交数据,比如 xxx.php?id=1. * POST注入:使用post请求提交数据,比如表单。 * Cookie注入:使用Cookie的某个字段提交数据,比如在Cookie中保存用户信息。 * HTTP Header注入:使用请求头提交数据,比如检测HTTP中的源地址、主机IP等。 **根据页面「是否回显」分类:** * 显注:前端页面可以回显用户信息,比如 联合注入、报错注入。 * 盲注:前端页面不能回显用户信息,比如 布尔盲注、时间盲注。