sql注入攻击

SQL注入总结

会有一股神秘感。 提交于 2019-11-27 19:21:59
SQL注入类型及检测注入 字符型注入 对于字符型注入,SQL语句如下 SELECT * FROM user_info WHERE id = '1'; 其实就是用户输入在引号内啦 就上面的定义来说,简单的检测方法就是用户输入带引号,以导致SQL语句结构不完整而报错或没有响应 True表示语句可用(正确显示内容或者操作有效) F alse表示语句不可用(Mysql报错或者无内容显示) 引号使用举例 SELECT * FROM user_info WHERE id = '1'' SELECT 1 FROM user_info WHERE 1 = '1'''''''''''''UNION SELECT '2'; 备注:多个引号的作用在一个智能WAF场景下,可以绕过语法检测 只要能够闭合,那么你就可以使用尽可能多的引号,在闭合完成的引号后面可以添加语句,利用引号闭合让原本的引号逃逸 数字型注入 相对字符型的,数字型的就是不加引号,用户输入是数字,SQL语句如下: SELECT * FROM Table WHERE id = 1; 通过运算符判断注入的存在 注意 : 数字型注入中,true相当与1,false相当与0. mysql的注释符 很多时候,用户的输入往往是被拼接到Sql语句的中间部分而非结尾,这样的话,可控部分后面的Sql代码往往会对我们的注入语句产生影响,造成意料之外的错误

SQL Injection(Blind)

為{幸葍}努か 提交于 2019-11-27 16:27:01
SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。目前网络上现存的SQL注入漏洞大多是SQL盲注。 0x01分类 Booleanbase(基于布尔) 布尔很明显Ture跟Fales,也就是说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。 Timebase(基于时间) 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确 0x02常用函数 1234567 substr() substr(string string,num start,num length);string为字符串;start为起始位置;length为长度。count() 计数函数 count()函数是用来统计表中记录的一个函数,返回匹配条件的行数select count(*) from mysql.user where id =1ascii()返回对应字符的十进制值length() 返回字符串长度left() left(str, length),即:left(被截取字符串, 截取长度)

20jdbc

荒凉一梦 提交于 2019-11-27 15:24:11
jdbc 概念及描述 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 数据库驱动 我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。其实也就是数据库厂商的JDBC接口实现,即对Connection等接口的实现类的jar文件。 常用接口 1.Driver接口   Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序,不同的数据库有不同的装载方法。如:   装载MySql驱动:Class.forName(“com.mysql.jdbc.Driver”);   装载Oracle驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”); 2.Connection接口   Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果。DriverManager.getConnection(url,

SQL注入基础

与世无争的帅哥 提交于 2019-11-27 13:54:47
一、万能密码 在说sql注入分类之前,先来看一下万能密码的构成原理。万能密码是由于某些程序,通过采用判断sql语句查询结果的值是否大于0,来判断用户输入 数据的正确性造成的。当查询之大于0时,代表用户存在,返回true,代表登录成功,否则返回false 代表登录失败。由于 ‘or 1=1--' 在执行后,结果始终为1,所以可以登录成功。因此,被称为万能密码。 二、注入的分类 注入的分类:数字型和字符型。攻击者目的只有一点,那就是绕过程序的限制,使用户输入的数据带入数据库执行,利用数据库的特殊性获取更多的信息或者更大的权限。 1、数字型注入 当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。 测试步骤: (1) 加单引号,URL: www.text.com/text.php?id=3 ’对应的 sql : select * from table where id=3’ 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常; (2) 加and 1=1 ,URL: www.text.com/text.php?id=3 and 1=1 对应的sql: select * from table where id=3’ and 1=1 语句执行正常,与原始页面如任何差异; (3) 加and 1=2,URL: www.text.com/text.php?id=3 and

sql注入

眉间皱痕 提交于 2019-11-27 09:27:11
什么叫SQL注入? 意思就是从网页中恶意注入一段sql代码,从而达到窃取隐私的效果。 盲注: 很多时候Web服务器会关闭错误回显,这样会使得你无法得知sql代码是否有用,所以盲注可以帮助你完成这个事情。所谓盲注,就是在服务器没有错误回显时完成的注入攻击,所以攻击者必须找到一个方法来验证注入的sql语句是否得到执行。 未完待续.... 摘自白帽子讲web安全 来源: https://www.cnblogs.com/2293002826PYozo/p/11355896.html

SqlMap免Python环境绿色版下载

 ̄綄美尐妖づ 提交于 2019-11-27 05:50:18
免Python环境绿色版下载 下载地址 下载地址 sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。 1.1 sqlmap简介 sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。 sqlmap支持五种不同的注入模式: l 基于布尔的盲注,即可以根据返回页面判断条件真假的注入; l 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断; l 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中; l 联合查询注入,可以使用union的情况下的注入; l 堆查询注入,可以同时执行多条语句的执行时的注入。 1.2 下载及安装 (1)linux下git直接安装 gitclone –depth 1 https://github.com/sqlmapproject/sqlmap.git

第515篇--Interview Summary (Sql Server)

怎甘沉沦 提交于 2019-11-26 21:36:37
在面试的时候, SQL 也是一个重点,总结一下以前的面试题目: 1 面试常见问题 SQL 聚集索引和非聚集索引 1) 我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。 2) 非聚集索引:我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。 但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。 我们可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。它也许同时有主题索引和作者索引。同样,一个表可以有多个非聚簇索引. 2 防止 SQL 注入的常用方式 ok 1:过滤掉特殊字符用户输入内容中的所有连字符,防止攻击者构造出类如. 2 用存储过程来执行所有的查询。SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行

信息安全+渗透测试+攻防框架

浪尽此生 提交于 2019-11-26 17:40:19
1、WAF攻击 如何绕过WAF的防御策略: 攻击方 进行SQL注入 尝试绕过WAF检测, 攻击结果: 攻击方通过构造超长数据包,成功绕过WAF规格检测,并SQL注入获取数据库名,防守无法检测 ,对应的策略是升级WAF规格,调整策略 来源: https://www.cnblogs.com/xinxianquan/p/11326017.html