注入漏洞形成原理

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

网站分类

静态网页:

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

动态网页:

  • asp、aspx、php、jsp等,由相应的脚本引擎来解释执行,根据指令生成静态网页。
  1. 依赖数据库
  2. 灵活性好,维护简便
  3. 交互性好,功能强大
  4. 存在安全风险,可能存在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

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注入,还是后面的其他漏洞,都适用。