SQL注入(分类、原因、寻找注入)

目标:

SQL注入
SQL注入分类
造成SQL注入的原因
寻找SQL注入

一、SQL注入

1、什么是SQL注入漏洞
攻击者利用web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后台数据库的入侵。

2、SQL注入原理
SQL注入攻击的本质,服务端没有过滤用户输入的恶意数据,直接把用户输入的数据当作SQL语句执行,从而影响数据库安全和平台安全

3、注入的本质 对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。

4、两个条件 用户能够控制输入 原本程序要执行的SQL语句,拼接了用户输入的恶意数据

5、注入过程
在这里插入图片描述

6、SQL注入带来的危害 绕过登录验证:使用万能密码登录网站后台等。 获取敏感数据:获取网站管理员账号、密码等。
文件操作系统:列目录、读取、写入文件等。 注册表操作:读取、写入、删除注册表等。 执行系统命令:远程执行命令。

7、通过在用户名处传入参数’ or 1=1 #进行万能密码登录。

SELECT username,password FROM users WHERE username='textvalue' or 1=1 #' AND password='textvalue2'

输入字符
formusr='or 1=1 --
formpwd = anything
实际的查询代码
SELECT * FROM users WHRER username ='' or 1=1 -- AND password='anything'

8、判断一个HHTP请求是否存在SQL注入的方式

经典an:d 1=1 | and 2 > 1 | or 1=1 | or 1<1
数据库函数:and sleep(4)=1 | and length(user())>3
特殊符号:单引号(号(")') 双引

二、SQL注入分类
2、SQL注入

攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗数据库服务器执行恶意的SQL命令 命令注入。
后端未过滤掉恶意数据,代码当做系统命令执行。 代码注入 一般出现在不安全的使用某些函数(列如文件包含,反序列化漏洞)。 LDAP注入。

LDAP(轻量级目录访问协议)用于访问网络中的目录服务,常用在Active Directory,企业管理目录。
用户提交的输入不经验证插入LDAP搜索过滤器中,攻击者通常提交专门设计的输入修改过滤器的结构,以检索数据或执行未授权的操作。

2、注入类型
XML注入

XXE漏洞:引出外部实体时,通过构造恶意内容,导致读取任意文件,
执行系统命令、探测内网端口、攻击内网网站等危害。

XPath注入:与SQL注入类似,XPath解析器本身对URL、表单中提交的代码内未作严格限制,导致恶意代码可以直接解析执行
XQuery注入
JSON注入

轻量级的数据交换格式,主要利用特殊字符注入JSON中,造成解析失败。
JSONP注入
回调函数未作严格的检测和过滤

数字型注入

输入的参数为整数,如ID、年龄、页码等,如果存在注入型漏洞,则为数字型注入
http://www.testweb.com/user.php?id=8
存在数字型注入见检测方法

字符型注入

输入的参数为字符串
与数组型注入的区别在于:字符型注入一般你要使用单引号来闭合
http://www.testweb.com/test.php?user=admin
存在字符型注入检测方..z法

搜索型注入

主要是指在进行数据搜索时没过滤搜素参数。
一般在链接地址中有"keyword="关键字",有的不显示的连接地址,而是直接通过搜索框表单提交。
此类注入点提交的SQL语句,其原型大致为:
select * from 表名 where 字段 like '%关键字%'
提交注入参数为"keyword"=and[查询条件]and '%'=',则向数据库提交的SQL语句为
select * from 表明 where 字段 like '%' and[查询条件] and '%'='%'

三、造成SQL注入的原因
(1)动态字符串构成引起。

  • 不正确的处理转义字符。
  • 不正确的处理类型(报错泄露信息)。
  • 不正确的处理联合查询。
  • 不正确的处理错误(错误泄露信息)。
  • 不确定的处理多次提交(二次注入)。
    2.后台存在的问题:
  • 后台无过滤
  • 数据库可以拼接用户传递的恶意代码。
    3.错误处理不当:
  • 内部错误消息显示给用户或攻击者。
  • 错误信息可以给攻击者提供帮助。
    4.不安全的数据库配置:
    默认用户
    SQL Server "sa"作为数据库系统管理员庄户
    MySQL使用 root 和 anonymous用户账户
    Oracle则在创建数据库时通常默认会创建SYS、SYSTEMS DBSNMP和OUTLN账户。
    权限
    问题:安装数据库服务器时允许 roots system administrator特权系统用户账户身份执行操作。
    正确方法:使用以普通用户身份运行服务器上的服务,降低用户权限用户权限只限于本服务器。
    三、SQL注入过程
    1.自动化注入工具
    SQL注入工具:
    Sqlmap Havij Sqlid
    ASP JSP注入工具:
    NBSI 阿D注入软件 明小子注入软件
    PHP注入工具:
    穿山甲注入软件,海洋顶端注入软件
    2、手动注入过程
判断是否存在注入点
判断字段长度
判断字段回显位置
判断数据库信息
查找数据库名
查找数据库表
查找数据库表中所有字段以及字段值
猜解账户密码
登陆管理员后台

四、 寻找SQL注入
1、GET方法
GET是一种请求服务器的HTTP方法
使用该方法时,信息包含在URL中
点击一个连接时,会使用该方法

GET请求方法 格式:
?text =value&cat=value2&num=value3....

修改方法
浏览器的导航栏中直接修改即可操纵这些参数
HackBar
2、POST方法
POST是一种用于向Web服务器发送信息的HTTP方法。
数据信息无法URL中看到
可以发送字节大的数据
修改POST包方法
浏览器修改扩展
代理服务器

3、其他注入点数据
Cookie
Host
User—Agent
小结:
只要后台接受前端输入的数据,并且未对数据进行过滤处理,最后直接进入到数据库中,从而都能构成威胁
4、数据类型:

数字型:SELECT * FORM products WHERE idproduct=3   /value > 200
字符型:SELECT * FROM products WHERE name = 'Bike' /published date  '01/01/2013'
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值