[toc]

mysql相关知识

在mysql5版本之后,mysql默认在数据库中存放一个叫information_schema里面,这个库有很多表,重点是columns、tables、schemata表记录着库的信息

web SQL 注入漏洞原理

SQL注入产生原理

动态交互网站,实现交互利用用户输入拼接到SQL执行,输入不同导致返回结果不同。用户输入内容没有经过完美处理,而且构造SQL语句,直接将构造的SQL语句带入SQL语句中执行,导致SQL注入漏洞

条件:

参数用户可控:从前端传到后端的参数内容是用户可以控制的
参数带入数据库查询:传入的参数拼接到SQL语句,且传入数据库查询。

1
SQL语句拼接:select * from admin where username = '用户提交' and password = '用户提交';

使用万能密码(1’ or ‘1’=’1)

1
select * from admin where username = '用户提交' and password = '1' or '1'='1';

此时便可看出存在漏洞。

漏洞存在判断

回显是指页面有数据 信息返回

无回显是指根据输入的语句 页面没有任何变化或没有数据库中的内容显示到网页中

sql注释符

# 单行注释

—空格 单行注释 注意为短线短线空格

/**/ 多行注释 至少存在两处注入

web SQL 注入漏洞原理的类型

按攻击方式分为:

可联合查询漏洞(UNION query SQL injection)

可多语句查询注入(Stacked query SQL injection)

布尔注入(Boolean-based blind SQL injection)

报错型注入(Error-based SQL injection)

基于时间延时注入(Time-based blind SQL injection)

接受参数分为:

get注入

get请求参数放在url里,get请求的url传参有长度限制,中文需要url编码

post注入

post请求参数是放在请求body中的,长度没有限制

cookie参数注入

cookie参数放在请求头信息,提交时服务器会从请求头获取

注入类型分为:

int 整型

1
select * from users where id = 1;

string 字符型

1
select * from user where username='admin';

like 搜索型

1
select * from news where title like '%标题%'