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