SQL注入基础

本文详细介绍了SQL注入的概念、原理及不同类型,包括字符型、数字型、布尔盲注等。阐述了SQL注入的危害,如数据丢失和系统权限篡改,并讨论了其形成原因,如动态字符串构建和后台无过滤。此外,还讲解了万能密码的原理和判断注入的方法,为防止SQL注入提供了基础理解。
摘要由CSDN通过智能技术生成

目录

什么是SQL注入?

(1)SQL注入原理

(2)注入的两个条件

(3)MySQL中的注释

(4)SQL注入的过程

(5)SQL注入带来的危害

(6)万能密码的原理

(7)判断是否存在SQL注入

SQL注入的类型

(1)字符型

(2)数字型

(3)布尔盲注

(4)时间盲注

(5)报错注入

(6)联合查询注入

(7)堆查询注入

SQL注入漏洞形成原因?

(1)动态字符串构建引起

(2)后台无过滤

(3)错误处理不当

(4)不安全的数据库配置


什么是SQL注入?

​        攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后台数据库乃至整个应用系统的入侵。

​         由于服务端不安全、不完整的过滤,导致不应该非法的数据被带入,比如单双引号等导致前面语句闭合,后面就可以随意写恶意语句。

(1)SQL注入原理

       服务端没有过滤用户输入的恶意数据,直接把用户输入的数据当做SQL语句执行,从而影响数据库安全和平台安全。

(2)注入的两个条件

  •     用户能够控制输入
  •     原本程序要执行的SQL语句,拼接了用户输入的恶意数据

(3)MySQL中的注释

  • - #号-->一般需要进行编码=%23
  • - -->
  • - /*  */

(4)SQL注入的过程

  • 攻击者访问有SQL注入漏洞的网站,寻找注入点
  • 构造注入语句,将注入语句和程序中的SQL语句结合生成新的SQL语句
  • 提交生成的新SQL语句到服务器的数据库中
  • 数据库指向有注入语句的SQL语句,引发SQL注入攻击

(5)SQL注入带来的危害

  • 绕过登录验证:使用万能密码登录网站后台等
  • 获取敏感数据:获取网站管理员帐号、密码等
  • 文件系统操作:列目录,读取、写入文件等
  • 注册表操作:读取、写入、删除注册表等
  • 执行系统命令:远程执行命令
  • 最重要的危害:数据丢失

(6)万能密码的原理

  • 通过在用户名处传入参数'or 1=1 --进行万能密码登录
  • 实际查询语句:SELECT * FROM users WHERE username = **" or 1=1 --** AND password = 'anything';
  • 使用or连接两个条件,无论前一个条件对不对,只要保证后面的条件恒为真时,就能正常执行查询语句
  • 相当于:SELECT * FROM users ;

(7)判断是否存在SQL注入

  • ?id=1 and 1=1(确保and前后条件都为真)

  • ?id=1 '(加单双引号)

  • 数据库函数(布尔盲注/时间盲注)sleep((3),0) 若为真则暂停3

  • length()函数判断

SQL注入的类型

(1)字符型

传过来的数据使用单双引号包裹起来,所以需要进行单双引号闭合。

案例sqli-labs第

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值