学习笔记:web漏洞---SQL注入

SQL注入漏洞

一,
概述:攻击者利用web应用程序对用户的输入没有进行安全过滤或者过滤不足,导致攻击者可以拼接sql语句,进行数据库操作,乃至入侵web应用系统(服务器)。

原理:web应用系程序对用户输入的数据没有进行严格的过滤,直接把用户输入的数据以拼接的方式带入SQL语句中执行。导致攻击者可以获得数据库中的数据,影响数据库安全和平台安全

分类:提交方式:GET,POST,COOKILE,REQUEST,HTTP header
           数据类型:数字型,字符型
           是否回显:显注,盲注
           其他:报错,搜索,base6等等

GET注入:使用get请求提交数据,比如 在url中
POST注入:使用post请求提交数据,比如表单
Cookie注入:使用Cookie的某个字段提交数据,比如在Cookie中保存用户信息
HTTP Header注入:使用请求头提交数据,比如检测HTTP中的源地址、主机IP等

显注:前端页面可以回显用户信息,比如 联合注入、报错注入
盲注:前端页面不能回显用户信息,比如 布尔盲注、时间盲注
等等

危害包括但不局限于∶
1.用户信息泄露:数据库中存放的用户的隐私信息,比如账号、密码
2.网站挂马:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击
3.网页篡改:通过操作数据库对特定网页进行篡改
4.恶意操作:窜改数据库的系统管理员帐户、被安装后门等
5.破坏硬盘数据,瘫痪全系统

出现在如下的地方:

 图片仅用作学习

二,

实现SQL注入的两个条件:

1.用户能够控制输入

2.原本程序要执行的SQL语句,拼接了用户输入的恶意数据

注入方式:手工注入,自动化注入

1.手工注入步骤:

第一步,判断是注入是字符型或数字型:
(1)数字型注入:当输入参数为数字类型时,例如页码,ID等,存在注入时则为数字类型的注入
测试步骤:1.加 '    :这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常;
                 2.加and  1=1 :执行正常,与原始页面如任何差异
                 3.加and 1=2 :可以正常执行,但是无法查询出结果,所以返回数据与原始网页存在差异
后台查询的sql语句
select*  from users where id =1 ' ;
select * from users where id =1 and 1=1; 
select * from users where id =1 and 1=2;
如果满足以上三点,则可以判断该URL存在数字型注入

例如:测试方法如下:

http://www.xx.com/a.php?id=1

http://www.xx.com/a.php?id=1’                     返回异常

http://www.xx.com/a.php?id=1 and 1 =1              返回正常

http://www.xx.com/a.php?id=1 and 1 =2              返回异常
数字型的注入,不需要闭合就可以直接进行注入。(如果系统做了数字型传入的判断,就防止注入)

(2)字符型注入:当输入参数为字串类型时,则为字串类型的输入,其与数字类型的注入的区别在于:注入时需要使用单引号来闭合
测试步骤:1.加  '  输入1' 报错
                 2.输入1' and 1=1#/--+或 1' and '1'='1语法正确,逻辑判断正确,返回正确
                 3.输入1' and 1=2#/--+或 1' and '1'='2语法正确,逻辑判断错误,返回错误
                 判断为字符型注入,闭合符号为单引号

有的地方因为注释符的原因,会报语法错误

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值