SQL注入
注入漏洞形成原理
- sql注入就是在数据交互中,前端数据传到后台时没有做严格的判断,导致传进来的数据被拼接到sql语句中,被当作sql语句的一部分进行执行,从而导致数据泄露,丢失甚至服务器瘫痪。如果代码中没有过滤或者过滤不严谨是会出现漏洞的。
网站分类
静态网页:
- html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析。
- 不依赖数据库
- 灵活性差,制作、更新、维护麻烦
- 交互性较差,在功能方面有较大的限制
- 安全,不存在SQL注入漏洞
动态网页:
- asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页。
- 依赖数据库
- 灵活性好,维护简便
- 交互性好,功能强大
- 存在安全风险,可能存在SQL注入漏洞
SQL注入
注入时信息收集
判断注入
and 1=1 正常
and 1=2 错误
可能存在注入,其实归根结底就是看我们的输入会不会对网站造成影响,即我们的操作有效
单引号:'
/
和 -0
判断数据库类型
- access
1
and exists (select * from msysobjects)>0
- sqlserver
1
and exists (select * from sysobjects)>0
- 判断数据库表
1
and exists (select * from admin)
- 判断数据库列名
1
and exists (select admin from admin)
工具扫描
Awvs、burp、appscan、sqlmap
SQL注入- Sqlserver
https://putdown.top/2022/07/29/SQL%E6%B3%A8%E5%85%A5-Sqlserver/
SQL注入- Mysql
https://putdown.top/2022/07/29/SQL%E6%B3%A8%E5%85%A5-Mysql/
SQL注入- Oracle&Postgresql
SQL注入- 其他注入漏洞
小结
如果对数据库不精通,那么SQL注入就交给工具吧,如今SQL注入工具已经比较完善了。如果工具注入无法完成,再进行手工注入。总之,SQL注入时,一般以工具为主,手工为辅。
SQL注入的危害虽然很大,但是可以完全杜绝,程序开发团队一定要有自己的安全规范模板,因为不可能每个程序员都了解SQL注入,所以团队有一套自己的模板之后,SQL注入会大大减少。比如,碰到SQL语句完全采用“PreparedStatement”类,且必须用参数绑定,如果这样还存在SQL注入,那就是某个程序员没有遵循规范,这样就从安全转移到代码规范问题上,只要遵循规范,不会有问题,这一方法无论是SQL注入,还是后面的其他漏洞,都适用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Putdownd’s Blog!