什么是SQL
定义:结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。
SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致了如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。
如何实现SQL注入
- 参数用户可控 —— 即用户能够控制数据的输入
- 我们构造的参数可带入数据库执行 —— 原本要执行的代码,拼接了用户的输入
- SQL注入(一)—— sql手动注入实操_sql注入手动注入方法-CSDN博客
SQL注入的类型
1.按照注入形式不同分
数字型注入
字符型注入
搜索型注入
2.按照请求方式的不同分
GET注入
POST注入
HEADER注入
3.按照注入点位置的不同分
- 列注入
- 表注入
- order注入
- limit注
- group by注入
4.按照执行效果来分
(1)基于布尔的盲注:根据页面返回判断条件真假注入。
(2)基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
(3)基于报错的注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
- 单引号
- 双引号
- 基于数字型注入
(4)联合查询注入:可以使用union情况下注入。
SQL注入的危害
脱库,导致敏感数据泄漏; getshell,获取服务器权限。
脱库:是指通过非法手段获取网站的数据库,会员的信息或者自己需要的信息。
黑客术语里面,”脱库“是指黑客入侵有价值的网络站点,把注册用户的资料数据库全部盗走的行为,因为谐音,也经常被称作“脱库”,360的库带计划,奖励提交漏洞的白帽子,也是因此而得名。
SQL常见的绕过方法
(1)大小写关键词绕过(UNiOn)
(2)双写关键词绕过(ununionion)
(3)编码绕过(base64、url)
(4)内联注释绕过(/*! Union */)
参考文章