一.前言
本章节我们来讲解一下sql注入的分类,主要分为四类,数字型、字符型、搜索型、xx型。
二.数字型
数字型注入的时候,是不需要考虑单\双引号闭合问题的,因为sql语句中的数字是不需要用引号括起来的,如下
mysql> select username,email from member where id=1;
mysql> select username,email from member where id=1 or 1=1;
1 or 1=1 #
注入成功,看一下后台代码
这里并没有加上引号,所以我们不需要加上引号。
注意:我们判断是否为数字型注入,不是通过前端页面上看到的数据是数字就判断它是数字型注入,也 有可能是伪数字型,因为后台处理的时候可能是将前端传递过来的数字通过引号括起来了,也就是作为 了字符串来处理,所以要多尝试。
三.字符型
字符串类型的输入方式
我们得先检查phpstudy的魔术符号是否开启了,这是phpstudy的一个安全机制,我们关闭它
xxx' or 1=1 #
这个我们前面看过源码了,这里就不再看了。
四.搜索型
打开pikachu平台,在SQL-Inject下选择搜索型注入,然后随意输入一个字母,能看到匹配出了对应的信 息,也就是模糊搜索,用到了%通配符。按照SQL的模糊查询命令 select * from 表名 where 字段名like '%(对应值)%'; ,发现可以按照之前的思路来实现万能语句的拼接。
比如下面sql语句中的 like %vince% 的意思是:xxvincexx、vincexx、xxvince等数据都能匹配到。
%xxxx%' or 1=1 #
这个就也不给大家看源码啦,因为和字符型都差不多啦,主要就是闭合括号啦。
五.xx型
XX型是由于SQL语句拼接方式不同,注入语句如下:
mysql> select * from member where username=('vince') ;
mysql> select * from member where username=('xx') or 1=1;
所以我们主要就是要左边括号给闭合
XX') or 1=1#
六.总结
本章节讲解了不同类型的sql注入,但是大家仔细发现就能知道,当然还有一个json类型的没和大家介绍,这个其实都大差不差,主要是看里面的值是啥类型的啦!后面会持续更新,期待大家的点赞关注加收藏