首先要知道sql注入形成的原因:用户输入的数据被sql解释器执行

sql注入又分:数字型,字符型,cookie 注入,post注入,延时注入,搜索注入,base64注入

如何甄别一个模块是否有sql注入呢 打个比方

数字型注入

www.baidu.com/test?id=1 有这摸一个页面 我在后面加上

www.baidu.com/test?id=1 and 1=2   如果返回正常无数据就证明此模块可能存在SQL注入漏洞

而注入多存在asp.php弱类型语言中

上面那个例子就是典型的数字型注入

字符型注入

注意字符串闭合问题如下例子

select * from table where name='123' and pwd='123' 如果不知道密码 可以把输入的123 改成

123‘ and1=1 --  在被sql解析器解析时就会变成 select * from table where name='123‘ and1=1 -- ‘and pwd='123'  就这样成功注入了

当然也要注意不同数据库的连接字符串也不同 SQL Server 是+ ,Oracle 是 || ,MySQL 是空格

我们以SQL Server Mysql Oracle  这三种主流数据库为例

SQL Server

如果在程序中没有用try cath 对错误捕捉在进行友好提示 那sql错误信息 就可能直接暴露给用户 如果是攻击者则会暴露更多信息

select * from table where name='123' and pwd='123' 在密码处进行注入  123‘ group by username having 1=1 --  如果列中未包含usrname 列名 那么就会将这个错误直接返回给前台显示 通过sql server 错误提示 用having 对表的字段进行字典枚举 可以获取表所有字段  也可以利用系统数据库获取更多数据库信息 内嵌查询

select * from sys.databases --数据库所有数据库
select * from  sys.sql_logins --所有登录名
select * from INFORMATION_SCHEMA.TABLES --当前数据库的所有表
select * from INFORMATION_SCHEMA.COLUMNS --当前数据库的表列
select * from sys.all_columns --用户定义的对象和列的集合
select * from  sys.database_principals --数据库的权限查询
select * from  sys.database_files --在数据库数据库文件位置
select * from  sys.objects --数据库的日志,存储过程

order by  注入可以知道当前表的列数

order by 100  可以递归知道没出现错误可以确定该数据库有多少列  union 也同样适用

比如 where id=1  注入  id=1 union select null,null  就会包错 会显示合并列不匹配 可以一直加空 直到不报错

当然大部分程序杜绝了’号 可以利用16进制 比如

select * from table id=1&type=0x4568468  可以对特殊语句进行16进制处理

Mysql Oracle   同理 可能语法不同和系统函数不用 但注入手段都是差不多的

为了避免sql 注入 所以对用户所有输入的地方对输入进行参数化处理就可以啦

SQL 注入漏洞的更多相关文章

  1. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  2. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  3. WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案

    对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...

  4. SQL Injection(SQL注入漏洞)

    审计前准备: 1.安�php程序(推荐phpStudy) 2.高亮编辑器(推荐 Sublimetext Notepad++) 3.新建一个文本,复制以下变量,这些变量是审计中需要在源码中寻找的 ### ...

  5. sql注入漏洞

    在这么多bug里给我印象最深的就是sql注入漏洞,看上去没有问题的代码却会因为用户的不正常输入而带来极其严重的问题. 现在给大家分享一下如何修复SQL注入漏洞.下面是网上的两种解决方法,其中第二方法有 ...

  6. 利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...

  7. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  8. 预处理prepareStatement是怎么防止sql注入漏洞的?

    序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...

  9. jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件

    day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...

  10. 利用SQL注入漏洞登录后台的实现方法 。。。。转载

    一.SQL注入的步骤 a) 寻找注入点(如:登录界面.留言板等) b) 用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c) 将sql语句发送给数据库管理系统(DBMS) d) DBMS ...

随机推荐

  1. Python OR & AND

    These are the Boolean operations, ordered by ascending priority: Operation Result Notes x or y if x ...

  2. Redis-02.数据类型

    Redis中所有数据都是以key-value存储的,value支持的数据类型包括string.hash.list.set.sorted_set 数据类型 string 是redis最基本的类型,一个k ...

  3. Visualizing the Git data model

    I wrote a small tool git-graph.py over the weekend which can be used to generate the object graph of ...

  4. 全栈开发工程师微信小程序-上(下)

    全栈开发工程师微信小程序-上(下) icon 图标 success, success_no_circle, info, warn, waiting, cancel, download, search, ...

  5. 折腾nock给jsonp进行单元测试

    概述 前几天学习用Jest和nock.js对异步api进行单元测试.在项目中,我用到了jsonp,自然想到对jsonp进行单元测试. 过程很折腾,结果很有趣. jsonp.js 首先axios或者fe ...

  6. [Swift-2019力扣杯春季初赛]3. 最小化舍入误差以满足目标

    给定一系列价格 [p1,p2...,pn] 和一个目标 target,将每个价格 pi 舍入为 Roundi(pi) 以使得舍入数组 [Round1(p1),Round2(p2)...,Roundn( ...

  7. Centos 基本命令不能用恢复方法

    遇到命令都不能用,直接执行下面的语句就可以: export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/roo ...

  8. 【vim】模式与模式切换

    很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (No ...

  9. Mybatis3.2不支持Ant通配符TypeAliasesPackage扫描的解决方案

    业务场景 业务场景:首先项目进行分布式拆分之后,按照模块再分为为api层和service层,web层. 其中订单业务的实体类放在com.muses.taoshop.item.entity,而用户相关的 ...

  10. 告诉你,Spring Boot 真是个牛逼货!

    现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下. Spring Boot ...