SQL注入产生原理
- 在参数传递,数据接收,数据交互,数据库执行四个步骤中,没有处理得当,通过参数传递,可以直接与之前的sql语句进行拼接。 通过恶意sql语句的拼接并且执行就可产生sql注入。
如何判断是否存在注入点(以mysql为例)
两种方法的本质都是检测拼接的sql语句是否执行
- and 1=1页面返回正常,and 1=2返回不正常
127.0.0.1/sqli-labs-php/Less-1/?id=1' and 1=1 --+
http://192.168.177.132/sqli-labs-php/Less-1/?id=1' and 1=2--+
-
可疑的注入点后随意输入数据,若网站带入执行说明存在注入点,若网站没反应,返回404,自动跳转等说明不存在注入点
明确参数类型
不同的参数类型会存在不同的干扰符号,这些干扰符号会导致语句成为无效的字符串,常见的干扰符号有',",%,),}等。
数字型:变量可直接赋值,也可通过引号包裹赋值
字符型:字符串必须用引号包裹赋值
搜索型:数据两端存在通配符%
明确请求方法
不同的请求方式请求的数据类型,大小都不一样,注入前应首先明确参数的请求方法。
GET:
URL:127.0.0.1/1.php?x=123
请求行 GET /1.php?x=123 HTTP/1.1
POST(常出现于登录框):
URL:127.0.0.1/1.php
Post data:x=123
请求行:POST /1.php HTTP/1.1
请求体:x=123
REQUEST:
GET,POST,COOKIE中的数据都可接收
COOKIE注入:后面补充