SQL注入
一、原理
在数据交互中,前端数据传到后台时没有做严格的判断,导致传进来的数据被拼接到sql语句中,被当作sql语句的一部分进行执行,从而导致数据泄露、丢失甚至服务器瘫痪。
二、危害
数据库敏感数据泄露修改、权限。
三、注入流程
1、信息收集
操作系统、数据库名、数据库用户、数据库版本、其他(网站路径等例如网站源码在哪个路径)
2、注入
低版本5.0:暴力查询或者结合读取查询
高版本>=5.0:information_schema有据查询
常规注入
【1】常见注入
回显注入、无回显注入、盲注(布尔、延时)
【2】注入扩展
加解密注入、JSON注入、LADP注入、DNSlog注入、二次注入、堆叠查询
【3】waf绕过
更改提交方式、大小写混合、解密编码类、注释符混用、等价函数替换、特殊符号混用、借助数据库特性、HTTP参数污染、垃圾数据溢出
高权限注入
跨库查询(information_schema.schemata)
文件读写:(load_file)(into outfile/dumpfile)
【文件路径获取】
- 报错显示:报错快照信息获取文件路径
- 遗留文件:phpinfo()中的scriptname等信息
- 漏洞报错:zblog报错,phpmyadmin爆路径
- 平台配置文件
- 爆破
3、常用工具
sqlmap
四、防御
1、数据库配置
魔术引号等
2、内置函数
自带类型函数is_int()等,一般无法绕过但很少这样写
3、自定义关键字
str_replace()
$id=str_replace('select','',$id)
4、waf
安全狗、宝塔:主要是过滤关键字