sql注入
[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 '%标题%' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小chen妙妙屋!
评论





