title: SQL注入
tags: SQL注入
abbrlink: e73517db

date: 2022-07-25 07:58:35

注入漏洞形成原理

  • sql注入就是在数据交互中,前端数据传到后台时没有做严格的判断,导致传进来的数据被拼接到sql语句中,被当作sql语句的一部分进行执行,从而导致数据泄露,丢失甚至服务器瘫痪。如果代码中没有过滤或者过滤不严谨是会出现漏洞的。

网站分类

静态网页:

  • html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析。
  • 不依赖数据库
  • 灵活性差,制作、更新、维护麻烦
  • 交互性较差,在功能方面有较大的限制
  • 安全,不存在SQL注入漏洞

动态网页:

  • asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页。
  • 依赖数据库
  • 灵活性好,维护简便
  • 交互性好,功能强大
  • 存在安全风险,可能存在SQL注入漏洞

SQL注入

注入时信息收集

判断注入

and 1=1 正常
and 1=2 错误
可能存在注入,其实归根结底就是看我们的输入会不会对网站造成影响,即我们的操作有效
单引号:`'``/`和-0``

判断数据库类型

  • access
    and exists (select * from msysobjects)>0
    
  • sqlserver
    and exists (select * from sysobjects)>0
    
  • 判断数据库表
    and exists (select * from admin)
    
  • 判断数据库列名
    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

https://putdown.top/2022/07/29/SQL%E6%B3%A8%E5%85%A5-Oracle-Postgresql%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E/

SQL注入- 其他注入漏洞

https://putdown.top/2022/07/29/SQL%E6%B3%A8%E5%85%A5-%E5%85%B6%E4%BB%96%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E/

小结

如果对数据库不精通,那么SQL注入就交给工具吧,如今SQL注入工具已经比较完善了。如果工具注入无法完成,再进行手工注入。总之,SQL注入时,一般以工具为主,手工为辅。
SQL注入的危害虽然很大,但是可以完全杜绝,程序开发团队一定要有自己的安全规范模板,因为不可能每个程序员都了解SQL注入,所以团队有一套自己的模板之后,SQL注入会大大减少。比如,碰到SQL语句完全采用“PreparedStatement”类,且必须用参数绑定,如果这样还存在SQL注入,那就是某个程序员没有遵循规范,这样就从安全转移到代码规范问题上,只要遵循规范,不会有问题,这一方法无论是SQL注入,还是后面的其他漏洞,都适用。