首先要知道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. 转 Tomcat+redis+nginx配置

    为客户开发的一个绩效系统,采用了java web的开发方式,使用了一些spring mvc, mybatis之类的框架.相比于oracle ebs的二次开发,这种开发更加灵活,虽然和ebs集成的时候遇 ...

  2. JS自定义鼠标右击菜单

    自定义鼠标右击菜单要素: 禁止页面默认右击事件 设置右击菜单的样式以及菜单出现的位置(通过捕获鼠标点击位置来确定菜单的位置) 鼠标在指定控件(区域)上右击时显示菜单(默认菜单隐藏,点击鼠标右键时显示) ...

  3. 12Js_原型对象

    对象描述: 1. 每个对象中都有一个_proto_属性. JS世界中没有类(模具)的概念,对象是从另一个对象(原型)衍生出来的,所以每个对象中会有一个_proto_属性指向它的原型对象.(参考左上角的 ...

  4. linux下tomcat服务器的相关命令

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

  5. docker发布netcore网站-零散记录

    安装docker 安装Linux,使用云服务器或者虚拟机 参考:http://www.cnblogs.com/wangjieguang/p/hyper-v-ubuntu.html 系统更新 sudo ...

  6. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

  7. OAuth2.0认证详解

    目录 什么是OAuth协议 OAuth2.0是为了解决什么问题? OAuth2.0成员和授权基本流程 OAuth2.0成员 OAuth2.0基本流程 什么是OAuth协议 OAuth 协议为用户资源的 ...

  8. 微信小程序客服消息新增临时素材接口java实现

    今天想在微信小程序的客服信息窗口里回复用户一个图片信息,发现还需要上传素材,但是微信文档的上传临时素材接口写的模模糊糊,无奈去百度,网上清一色的PHP实现方式,难道我穿越了?PHP已经把java给超越 ...

  9. document.getElementById 和 document.getElementsByClassName获取DOM元素的区别

    想必小伙伴们对于 JS 获取DOM的几种方法早已烂熟于心,了然于胸,   尤其是 document.getElementById 和 document.getElementsByClassName, ...

  10. Metasploit Framework(1)基本命令、简单使用

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 基本的控制台命令介绍: banner 查看metasp ...