Day5
SQL注入,【4.sql注入产生的原理,10.如何判断注点】
1.四个步骤:
参数的传递
数据的接收
数据的交互
数据库的执行
2.通过参数的传递,数据语言拼接到原来的语句后,执行恶意的数据操作。实现自定义的数据查询。
3.可控变量
通过参数传递可以改变它的值
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
其中id为变量可以修改
4.sql注入产生的原理
- 可控变量
- 带入数据查询
- 变量未存在过滤或者过滤不严谨
5.get注入和post注入
get注入:
http://127.0.0.1/sqli-labs-master/Less-1/?id=1
特征:
?id=××
6.注入测试正确
a.注入给了y没有给x
b.c.正确
d.参数名的错误
关注注入的对象,找注入点.
7.信息收集
数据库的收集
操作系统
数据库名
数据库用户
数据库管理
数据库版本
网站路径等
8.数据注入
9.MySQL数据库
一级一级的获取,无法一次性获取
10.如何判断注点
1、逻辑值
and 1 = 1 页面正常
and 1 = 2 页面异常
则可能存在注入点
正常和之前没有什么区别,不正常指和原来页面有很大的区别
2、order by
通过order by 判断注入的字段数
原理:
sql语句可以进行拼接,说白了就是看你输入的东西对现在这个页面有没有影响。
注:出现404或者返回主页面,说明有检测可能没有漏洞
**11.联合注入 union **
猜解列名数量,字段数 **ORDER BY ** 语句
错误和正确的数量值
12.信息收集
数据库版本:version()
数据库名字:database()
数据库用户:user()
操作系统:@@version_compile_os
爆出什么在什么地方写
13.必要知识点
在mysql5.0以后的版本存在一个information_schema数据库、里面存储记录数据库名、表名、列名的数据库。相当于可以通过information_schema这个数据库获取到数据库下面的表名和列名。
14.获取相关信息
information_schema.tables #information_schema下面的所有表名
information_schema.columns #information_schema下面所有的列名
table_name #表名
column_name #列名
table_schema #数据库名