WEB攻击-SQL注入

【数据库概述】

 原子性:事物是一个不可分割的单位,事物中的操作也么发生,要么都不发生

 一致性:事物前后数据的完整性必须保持一致

隔离性:多个用户并发访问数据库时,数据库为每一个用户开启的事物,不能被其他事物的操作数据所干扰,多个并发事物之间要互相隔离

持久性:一个事物一旦被提交,它对于数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其他有任何影响

【SQL注入原理】

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

【SQL注入的2个条件】

1、用户能够控制输入

2、用户要执行的SQL语句,拼接了用户输入的恶意数据

【SQL注入过程】

【SQL注入危害】

绕过登录验证:使用万能密码登录到网站后台等

获取敏感信息:获取网站管理员账号、密码等

文件系统操作:列目录,读取,写入文件等

注册表操作:读取、写入、删除注册表等

执行系统命令:远程执行命令

【SQL注入示例】

1、通过在用户名传入参数' or 1=1 -- 进行万能密码登录

 select name,pwd form user where name='aa' or 1=1 -- 'And pwd='anything'

经典: and 1=1 | and 2>1 | or 1=1 | or 1<1

            单引号或者双引号

SQL注入:通过把SQL命令插入到WEB表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

SQL注入类型:

按照注入点分类:

(1)数字型(整形)注入:许多网页链接有类似的结构 http://xxx.com/users.php?id=1 基于此种形式的注入,注入点id为数字,一般被叫做数字型注入点,通过这种形式查询出后台数据库信息返回前台展示,可以构造类似以下的sql语句进行爆破:select *** from 表名 where id=1 and 1=1  (实际查询代码比如 select ... from ... where id = $id.....)

 

 

 

(2)字符型注入:网页链接有类似的结构 http://xxx.com/users.php?name=admin 这种形式,注入点name为字符串,被称为字符型注入,可以用:select *** from 表名  where  name='admin'  and

 

 

 

 

(3)搜索型注入:主要是指在数据搜索时没有过滤搜索参数,一般在链接地址中有 "keyword=“关键字”",注入点提交的是sql语句,select * from 表名 where 字段 like '%关键字%' and '%1%'='%1%'

按照执行效果(注入技术)来分类:

(1)基于布尔的盲注:根据页面返回判断条件真假注入

(2)基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断

(3)基于报错的注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

  1. 单引号
  2. 双引号
  3. 基于数字型注入

(4)联合查询注入:可以使用union情况下注入

  (5)  堆查询注入

posted @ 2020-05-22 10:14  金朵  阅读(595)  评论(0)    收藏  举报