SQL注入
1、SQL注入的基本原理
SQL注入是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现 对数据库的任意操作。
SQL注入可能存在的地方是与数据库有交互的地方:
表单:post提交方式 URL:get提交方式
SQL注入的防范措施:对输入的内容进行过滤、字符串过滤、js函数检查是否包含非法函数、
2、信息收集
-
敏感目录和文件
卸剑后台
dirbuster
payload:攻击载荷/exp(恶意语言)
3、SQL注入的攻击流程
-
注入点探测
自动漏洞扫描工具:AppScan、AWVS、OWASP ZAP、Burpsuite
手动方式:自己构造语句
自动与手工的区别:手动效率高,但容易误报;自动效率低
-
信息获取
-
获取权限
4、SQL注入类型的判断
-
整型参数的判断(以下三种结果全部满足则一定存在SQL注入漏洞 id=)
-
字段=1‘ 出错
-
字段=1 and 1=1 结果与字段=1一致
-
字段=1 and 1=2 出错
-
- 字符型参数的判断(以下三种条件全部满足则存在SQL注入)
- 字符型参数的判断(以下三种条件全部满足则存在SQL注入)
-
2.字符型参数的判断(以下三种条件全部满足则存在SQL注入)
-
字段=1’ 报错
-
字段=1‘ and 1=1–+ 返回结果与字段=1一样
-
id=1’ and 1=2–+ 出错
(需要将字符型的引号进行成对:id=‘ ’)
对字符进行过滤:
数据库的注释:–空格 #(URL中要通过编码)
内联注释:/* id*/ 将语句中的语句给注释掉
强制内联:/*! id */
3、搜索型
5、MYSQL的网站注入,5.0以上和5.0以下的区别???
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。