sql注入攻击

sql注入基础讲解

前提是你 提交于 2020-01-23 03:30:00
一,sql注入的本质 SQL注入能使攻击者绕过认证机制,完全控制远程服务器上的数据库。 SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web应用在后台 都使用某种SQL数据库。跟大多数语言一样,SQL语法允许数据库命令和用户数据混杂在一起的。如果开发人员不细心的话,用户数据就有可能被解释成命令, 这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。 注入攻击的本质是:把用户输入的数据当作代码执行。 注入的两个关键条件: 1,用户能控制输入。 2,原本程序要执行的代码,拼接了用户输入的数据。 sql注入就是在自带的系统数据库中查询库,表,字段,内容的过程 mysql内置自带库版本>=5 mysql库 保存账户信息,权限信息,存储过程,event,时区等信息 sys库包含了一系列存储过程,自定义函数以及视图来帮助我们快速了解系统的元数据信息 performance_schema库用于收集数据库服务器的性能参数 information_schema库存储了关于mysql服务器维护的所有其他数据库的信息,如数据库,表,表的数据类型与访问权限等。 查询数据库名称语句 select schema_name from information_schema.schemata 查表

Go Web 编程之 数据库

痞子三分冷 提交于 2020-01-22 11:14:35
概述 数据库用来存储数据。只要不是玩具项目,每个项目都需要用到数据库。现在用的最多的还是 MySQL, PostgreSQL 的使用也在快速增长中。在 Web 开发中,数据库也是必须的。本文将介绍如何在 Go 语言中操作数据库,基于 MySQL。本文假定大家已经掌握了数据库和 MySQL 的基础知识。关于 MySQL 有一个非常详细的免费教程我放在 参考 中了,需要的自取。 Go 语言标准库 database/sql 只是提供了一组查询和操作数据库的接口,没有提供任何实现。在 Go 中操作数据库只能使用第三方库。各种类型的数据库都有对应的第三方库。Go 中支持 MySQL 的驱动中最常见的是 go-sql-driver/mysql 。该库支持 database/sql ,全部采用 go 实现。 数据库操作 准备工作 创建一个数据库 department ,表示公司中的某个部门。在该库中创建两张表 employees 和 teams 。 employees 记录员工信息, teams 记录小组信息。每个员工都属于一个小组,每个小组都有若干名员工。 SET NAMES utf8mb4; CREATE DATABASE IF NOT EXISTS `department` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE

SQL 映射的 XML 文件

梦想的初衷 提交于 2020-01-21 13:55:00
MyBatis 真正的力量是在映射语句中。这里是奇迹发生的地方。 对于所有的力量, SQL 映射的 XML 文件是相当的简单。当然如果你将它们和对等功能的 JDBC 代码来比较,你会 发现映射文件 节省了大约 95% 的代码量 。 MyBatis 的构建就是聚焦于 SQL 的,使其远离于 普通的方式。 SQL 映射文件有很少的几个顶级元素( 按照它们应该被定义的顺序 ):  cache - 配置给定命名空间的缓存。  cache-ref – 从其他命名空间引用缓存配置。  resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。  sql – 可以重用的 SQL 块,也可以被其他语句引用。  insert – 映射插入语句  update – 映射更新语句  delete – 映射删除语句  select – 映射查询语句 select <select id=”selectPerson” parameterType=”int” resultType=”hashmap”> SELECT * FROM PERSON WHERE ID = #{id} </select> 这个语句被称作 selectPerson,使用一个 int (或 Integer)类型的参数,并返回一个 HashMap类型的对象,其中的键是列名,值是列对应的值

基于约束的SQL攻击

会有一股神秘感。 提交于 2020-01-20 18:45:06
首先需要注意的是, 本文所述的是基于约束的SQL攻击而非SQL注入攻击 碰到这个问题,是在做CTF题时碰到的(题目网址: http://123.206.31.85:49163/ ) 这一道题是要求我们以管理员admin的身份登陆系统方可查看flag,方法就是在注册时注册一个admin (admin后面带一个或几个空格),然后登录系统,系统会误认为是管理员登录了系统,所以赋予管理员权限。 那么,就算我们采用PHP中的PDO以及预查寻的方式(详见 简单的PDO技术以及预处理方法预防SQL注入 )来处理是否能预防基于约束的SQL攻击呢?这里给出靶场的源代码,环境使用的是Windows上的phpstudy(php-5.6.27+apache) 前端代码loginPDO.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录界面</title> </head> <body> <form action = "actionPDO.php" method = "post"> <div id = "main" class = "main"> <center> <h2> 登录 </h2> <p><lable>用户名称:</lable><input type="text" name="userName" placeholder

MySQL——JDBC

爱⌒轻易说出口 提交于 2020-01-19 16:47:22
1、数据库驱动 驱动:声卡,显卡、数据库 我们的程序会通过 数据库 驱动,和数据库打交道! 2、 JDBC SUN 公司为了简化 开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称 JDBC 这些规范的实现由具体的厂商去做~ 对于开发人员来说,我们只需要掌握 JDBC 接口的操作即可! java.sql javax.sql 还需要导入一个数据库驱动包 mysql-connector-java-5.1.47.jar 3、第一个JDBC 程序 创建测试数据库 CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStudy; CREATE TABLE users( id INT PRIMARY KEY, NAME VARCHAR(40), PASSWORD VARCHAR(40), email VARCHAR(60), birthday DATE ); INSERT INTO users(id,NAME,PASSWORD,email,birthday) VALUES(1,'zhansan','123456','zs@sina.com','1980-12-04'), (2,'lisi','123456','lisi@sina.com','1981-12-04'

第1课:SQL注入原理深度解析

烈酒焚心 提交于 2020-01-19 01:50:49
对于Web应用来说,注射式攻击由来已久,攻击方式也五花八门,常见的攻击方式有 SQL注射 、 命令注射 以及新近才出现的 XPath注射 等等。本文将以SQL注射为例,在源码级对其攻击原理进行深入的讲解。 一、注射式攻击的原理 注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会 将程序命令当作用户输入的数据提交给Web程序 ,以发号施令,为所欲为。 为了发动注射攻击,攻击者需要在常规输入中混入将被解释为命令的“数据”,要想成功,必须要做三件事情: 1.确定Web应用程序所使用的技术 注射式攻击对程序设计语言或者硬件关系密切,但是这些可以通过适当的踩点或者索性将所有常见的注射式攻击都搬出来逐个试一下就知道了。为了确定所采用的技术,攻击者可以考察Web页面的页脚,查看错误页面,检查页面源代码,或者使用诸如Nessus等工具来进行刺探。 2.确定所有可能的输入方式 Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单;另外,攻击者可以通过 隐藏的HTML表单输入 、 HTTP头部 、 cookies 、甚至对用户不可见的后端 AJAX请求 来跟Web应用进行交互。 一般来说,所有HTTP的GET和POST都应当作用户输入 。为了找出一个Web应用所有可能的用户输入,我们可以求助于Web代理,如 Burp 等。 3

脚本攻击与Sql注入

不羁岁月 提交于 2020-01-18 23:44:57
脚本攻击 什么是Sql注入 Sql注入是通过浏览器里输入一些特殊代码和一些sql数据库查询、修改、删除语句,来让服务器执行系统管理员所禁止的活动,可以攻占网站,取得管理权限,获取数据库中的敏感数据,或者删除数据,修改数据。 如:文本框中输入一些:<>、<!、!>、=、!=、Update、delete、select、count、sum、max、 Min、from,select. 防止注入:这些动态的Sql注入用””替换。 什么javascrpt攻击 Javascrpt是输入一些脚本,动态化的截取敏感数据,或者修改,删除网页里面的信息。 如:script|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|都是一些脚本攻击语句。 防止:用替换的方法把攻击语句替换成空格字符“”。 3.什么是跨站攻击 跨站脚本攻击 (也称为 XSS )指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样

sql之T-SQL

此生再无相见时 提交于 2020-01-16 16:17:38
下面就T-SQL的几个方面来分别讲解一下。 1、变量 要动态的写sql语句,就不能没有变量。 声明变量并赋值: 1 declare @i as int;--定义一个 int 类型的 变量 (as可以省略) 2 print @i;--这注意:没有赋值之前,程序不会报错,而且输出一个 空 3 set @i=3; 4 print @i; 在sql server 2008之后就可以对变量 在声明的同时进行赋值 1 declare @a int=3; 2 print @a; 在变量的使用过程中,一定要注意nvarcahr 和nchar的区别。 1 declare @s nvarchar(20); 2 set @s='Hello'; 3 set @s=@s+' World!'; 4 print @s;--输出的是 Hello World! 5 6 declare @s2 nchar(20); 7 set @s2='Hello'; 8 set @s2=@s2+' World!'; 9 print @s2;--输出的是 Hello。 为什么使用nchar却是输出的 Hello,因为:nchar是固定长度,即使长度没有达到最大,但是其余长度用 空来代替了,所以 相当于是满的,所以在进行字符串的相加 是不会起作用的。 在查询中赋值: 1 declare @now datetime; 2 select

Django学习笔记之安全

落爺英雄遲暮 提交于 2020-01-15 04:26:24
CSRF攻击 CSRF攻击概述 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 CSRF 漏洞,从而被黑客攻击而使 Gmail 的用户造成巨大的损失。 CSRF攻击原理 网站是通过 cookie 来实现登录功能的。而 cookie 只要存在浏览器中,那么浏览器在访问这个 cookie 的服务器的时候,就会自动的携带 cookie 信息到服务器上去。那么这时候就存在一个漏洞了,如果你访问了一个别有用心或病毒网站,这个网站可以在网页源代码中插入js代码,使用js代码给其他服务器发送请求(比如ICBC的转账请求)。那么因为在发送请求的时候,浏览器会自动的把 cookie 发送给对应的服务器,这时候相应的服务器(比如ICBC网站),就不知道这个请求是伪造的,就被欺骗过去了。从而达到在用户不知情的情况下,给某个服务器发送了一个请求(比如转账)。 防御CSRF攻击 CSRF攻击的要点就是在向服务器发送请求的时候,相应的 cookie

Django - 安全(九)

孤街浪徒 提交于 2020-01-15 03:33:09
安全 1,CSRF攻击 1,CSRF攻击概述 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 CSRF 漏洞,从而被黑客攻击而使 Gmail 的用户造成巨大的损失。 2,CSRF攻击原理 网站是通过cookie来实现登录功能的。而cookie只要存在浏览器中,那么浏览器在访问这个cookie的服务器的时候,就会自动的携带cookie信息到服务器上去。那么这时候就存在一个漏洞了,如果你访问了一个别有用心或病毒网站,这个网站可以在网页源代码中插入js代码,使用js代码给其他服务器发送请求(比如ICBC的转账请求)。那么因为在发送请求的时候,浏览器会自动的把cookie发送给对应的服务器,这时候相应的服务器(比如ICBC网站),就不知道这个请求是伪造的,就被欺骗过去了。从而达到在用户不知情的情况下,给某个服务器发送了一个请求(比如转账)。 3,防御CSRF攻击 CSRF攻击的要点就是在向服务器发送请求的时候