目录
SQL注入漏洞思维导图
1.SQL 注入原理
SQL 注入的攻击行为可以描述为通过用户可控参数中注入SQL 语法,破坏原有SQL 结构,达到编写程序时意料之外结果的攻击行为。其成因可以归结为以下两个原因叠加造成的:
1.程序员在处理程序和数据库交互时,使用字符串拼接的方式构造SQL 语句。(拼接)
2.未对用户可控参数进行足够的过滤,便将参数内容拼接到SQL 语句中。(未过滤)
2.SQL 注入危害
1.攻击者可以获取数据库中的信息,如后台管理员账密,从而脱取数据库中的内容(脱库)
2.删改数据库内容
3.获取WebShell 或者服务器权限
3.SQL 注入分类
两大基本类型 | 五大基本手法 | 提交参数方式 | 注入点的位置 |
---|---|---|---|
数字型 | 联合查询 | GET 注入 | URL 注入 |
字符型 | 报错注入 | POST 注入 | 搜索框注入 |
布尔盲注 | Cookie 注入 | 留言板注入 | |
延时注入 | HTTP 头部注入 | 登录框注入 | |
堆叠查询 |
4.SQL 注入漏洞挖掘
SQL注入可能存在的位置。 如何确定SQL注入漏涧存在性?
测试数据 | 测试判断 | 关注点 |
---|---|---|
-1或+1 | 是否能够回显上一个或者下一个页面(判断是否有回显) | 数据库中的内容是否会回显在网页中。 |
'或" | 是否显示数据库错误信息; 根据回显内容可以判断是字符型数据还是数字型 | 数据库报错信息是否会回显在网页中。 提交的数据是字符型还是数字型,如果是字符型数据,闭合方式是什么? |
and 1=1 and 1=2 | 回显的页面是否不同(布尔类型的状态) | 显示的页面不同,形成对比。 页面正常或者不正常。 |
and sleep(5) | 判断页面的返回时间 | 让数据库沉睡相应的秒数 |
\ | 判断转义 |