sql注入攻击

[SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

谁说我不能喝 提交于 2020-01-15 03:17:57
  最近读了 程序员的SQL金典 这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优。 1. SQL 注入漏洞   由于“ '1'='1' ”这个表达式永远返回 true ,而 true 与任何布尔值的 or 运算的结果都是 true ,那么无论正确密码是什么“ Password='1' or '1'='1' ”的计算值永远是 true ,这样恶意攻击者就可以使用任何帐户登录系统了。这样的漏洞就被称作“ SQL 注入漏洞( SQL Injection )”。   对付 SQL 注入漏洞有两种方式:过滤敏感字符和使用参数化 SQL 。   1). 过滤敏感字符   过滤敏感字符的思路非常简单,由于恶意攻击者一般需要在输入框中输入的文本一般含有 or 、 and 、 select 、 delete 之类的字符串片段,所以在拼接 SQL 之前检查用户提交的文本中是否含有这些敏感字符串,如果含有则终止操作。   2).使用参数化 SQL   为运行时才能确定的用户名和密码设置了占位符,然后在运行时再设定占位符的值,在执行时 Java 、 C# 会直接将参数化 SQL 以及对应的参数值传递给 DBMS ,在 DBMS 中会将参数值当成一个普通的值来处理而不是将它们拼接到参数化 SQL 中 ,因此从根本上避免了 SQL 注入漏洞攻击。 2. SQL

20.java-JDBC连接mysql数据库详解

走远了吗. 提交于 2020-01-14 17:55:49
1.JDBC介绍 jdbc (java database connectivity) 为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。 JDBC需要用到的类和接口有: DriverManager、Connection、Statement、ResultSet 2. mysql-connector-java下载 本机的mysql版本是5.7.26 win32的,所以本章访问mysql都以该版本为例: 然后进入 https://dev.mysql.com/downloads/connector/j/ 下载mysql-connector-java.jar包,用于连接mysql 如下图所示,只有8.0.19版本,那我们下载它就好了,反正不管64位还是32位都能访问: 下载解压后,就有个mysql-connector-java-8.0.19.jar: 接下来就来测试,能不能访问 3.JDBC使用过程 3.1 通过DriverManager. registerDriver( Driver driver)来注册驱动程序 需要注意,new Driver的时候,需要选择com.mysql.cj.jdbc.Driver: 因为com.mysql.jdbc.Driver已经被弃用了. PS: 也可以直接将 DriverManager. registerDriver

SQLMap基本使用方法及简单介绍

情到浓时终转凉″ 提交于 2020-01-14 17:49:29
SQLMap介绍 SQLMap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定URL的SQL注入漏洞,SQLMap支持的数据库有MySQL、Oracle、Microsoft Access、PostgreSQL、Microsoft SQL Server、IBM DB2、SQLite、Sybase和Firebird等。SQLMap主要使用了以下五种SQL注入技术。 联合查询注入:在可以使用Union的情况下的注入 报错注入:在页面可以返回错误信息,或者把注入的语句的结果直接返回到页面中 堆查询注入:可以同时执行多条语句时的注入 基于布尔类型的盲注:可以根据返回页面判断条件真假的注入 基于时间的盲注:在不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断 SQLMap的强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。 SQLMap基本命令 在SQLMap中可以使用 sqlmap.py -h来查看SQLMap的参数以及用法 1、判断该url是否存在注入 假设目标是http://127.0.0.1/sql/Less-1/?id=1,判断其是否存在注入的命令如下所示 sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1"

【安全】SQL注入(未完)

六眼飞鱼酱① 提交于 2020-01-14 11:23:20
1 SQL注入原理 用户名使用“ 'or 1=1–”登录,密码随意填写或不填 正常执行 select count(*) from admin where username='admin' and password='password' 输入特殊用户 select count(*) from admin where username=' ' or 1=1--'and password=' ' 此时password被注释,而前面永远为真,也就可以顺利完成登录。 同样可以利用这种方式执行其他命令 ' or 1=1 ; drop table admin --’ 因为SQLServer支持多语句执行,所以这里可以直接删除admin表 SQL注入漏洞的形成原因: 用户输入的数据被SQL解释器执行 2 注入漏洞分类 2.1 数字型注入 当参数为整型时,如id、年龄、页码等,如果存在注入漏洞,则可以认为是数字型注入。 假设有URL HTTP://www.xxx.com/test.php?id=8 可以猜测SQL语句为: select * from table where id = 8 测试步骤如下: 1. URL: HTTP://www.xxx.com/test.php?id=8' SQL: select * from table where id = 8' 这样的语句肯定出错

分享自己的超轻量级高性能ORM数据访问框架Deft

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-12 13:55:46
Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手。 Deft包含如下但不限于此的特点: 1、按照Transact-SQL的语法语义风格来设计,只要调用者熟悉基本的Transact-SQL语法即可瞬间无忧开码,大大降低了学习Deft的成本,甚至零成本。 2、性能十分不错(个人觉得易用性很重要,只要性能不拖后腿就好了),通过缓存+Emit反射IDataReader,极速获取List<T>。 3、强大的查询功能,支持使用Lambda表达式任意组装where条件,支持各种各样的运算符和括号优先级,支持给查询字段取别名。 4、支持SQLServer、MySQL、Oracle、SQLite等多数据库类型,同时也支持一个业务系统里面存在多个数据库。 5、支持事务、分页查询、排序等。 6、支持like,in等sql操作符,支持avg,count,max,min,sum等sql函数。 7、颜值高,整套语法接口设计的十分巧妙,支持Lambda 表达式,链式编程,任意组装sql,极度美观。 8、支持手写sql, List<T> Select<T>(string sql)。 9、各种映射能力,包括任意查询的结果映射,支持dynamic。 10、实体类非常简单,手写即可,不需要借助工具,也没有特性标记或者继承BaseEntity等杂七杂八的东西。 11

Web安全测试漏洞场景

风流意气都作罢 提交于 2020-01-09 10:36:42
HTTP.sys 远程代码执行 测试类型: 基础结构测试 威胁分类: 操作系统命令 原因: 未安装第三方产品的最新补丁或最新修订程序 安全性风险: 可能会在 Web 服务器上运行远程命令。这通常意味着完全破坏服务器及其内容 技术描述: 通过 IIS 6 引入的 HTTP 协议堆栈 (HTTP.sys) 错误地解析了特制的 HTTP 请求。因此,远程攻击者可能执行拒绝服务供给,并可在系统帐户的环境中执行任意代码。该漏洞会影响 Windows 7、Windows Server 2008R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2 上安装的 IIS。Microsoft 发布了通过修改 Windows HTTP 堆栈处理请求的方式来解决漏洞的更新。 利用的样本: GET / HTTP/1.1 Host: [SERVER] Range: bytes=0-18446744073709551615 SQL 盲注 测试类型: 应用程序级别测试 威胁分类: SQL 注入 原因: 未对用户输入正确执行危险字符清理 安全性风险: 可能会查看、修改或删除数据库条目和表 技术描述: 该软件使用受外部影响的输入来构造 SQL 命令的全部或一部分,但是它未能对可能在 SQL

SQL注入一:注入原理

落花浮王杯 提交于 2020-01-08 19:45:41
Sql注入是一种通过操作sql语句进行攻击目的的技术。 sql注入分类: 1 数据库类型注入 Access,MSsql,mysql等数据库注入攻击 2 提交方式注入 get,post,cookie,http等提交注入攻击 3 参数类型注入 数字,字符,搜索等注入攻击 4 其他复杂性注入 加解密小技巧注入 5 报错延时盲注 手工注入加强版 6 防注入及绕过 WAF及常见过滤分析及绕过 7 注入漏洞拓展 注入函数,注入挖掘等 来源: https://www.cnblogs.com/crystal1126/p/12168232.html

DVWA--SQL注入

一世执手 提交于 2020-01-07 13:11:25
SQL注入原理 就是通过sql命令插入到web表单递交或输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的SDL命令。具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在WEB表单中输入恶意SQL语句得到包含漏洞的网站数据库,而不是按照设计者意图去执行。 SQL注入类型 按照数据提交的方式: GET注入、POST注入、COOKIE注入、HTTP头部注入 按照注入点类型来分: 数据型注入点、字符型注入点、搜索性注入点 按照执行效果来分: 基于布尔的盲注、基于时间的盲注、基于报错注入、联合查询注入、堆叠注入、宽字节注入 常用SQL语句 show databases;查看数据库名 注:Information_schema:包含所有库的所有数据,mysql5.0以上版本存在该数据库 use emp(表名);使用某个表 show tables;查看表 desc emp(表名);查看表的结构 select * from emp;查询所有列 select empmo,ename,mgr FROM emp;查询指定项 select distinct from emp;只显示结果不同的项 select * from emp where job=’clerk’ 查询指定行 select * from emp where (sal>50 or job=

dvwa闯关——low级SQL

社会主义新天地 提交于 2020-01-07 04:59:16
sql注入:攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。 一、判断是否存在注入点:   1.1;正常      2.1‘;加上一个单引号报错      3.1’ and '1'='1;正常      说明存在注入点 二、判断字段数   1.1' order by 2#      2.1' order by 3#;到3就报错了,说明只有两个字段    三、确定回显位置   1' union select 1,2#    四、查询当前数据库和版本   1' union select version(),database()#    五、获取数据库中的表   1' union select 1,table_name from information_schema.tables where table_schema='dvwa'#    六、获取users表中的字段名   1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#    七、获取表中的一些数据   1' union select user,password from users#    来源: https://www.cnblogs

mybatis总结

牧云@^-^@ 提交于 2020-01-06 04:17:29
1.mybatis的工作原理 1:使用连接池,datasource,在驱动并连接的这个过程中优化并解耦 JDBC第一步其实从效率角度来看是不合适的,因为无论什么数据库都不可能支撑随机和庞大的连接数,而且不可避免的存在连接浪费的情况,Mybatis就封装了这些优化的方法。 2:统一sql存取到XML 如果代码写在java块中,在团队合作中很可能出现两个交叉业务的代码使用类似的sql语句,而开发人员的工作本身没有交集,那就代表sql语句肯定是无法复用的。而且对sql的修改,就代表着对java文件的修改,需要重新编译和打包部署(比如常见的状态值更改,sql修改随着业务变化必然存在修改)。 mybatis将sql统一存取到xml中,就算存在业务交叉,但因为统一配置的缘故,sql在xml中一目了然,两个跨team的程序员可以看到对方的sql,来判断自己是否需要重用。并且使用xml配置可以减少代码编译。 3:参数和结果集映射 sql的方式需要传入参数,如果存在多条件“或类型”的查询(列表查询的查询条件允许空),那就代表你必须传参进行sql拼接,就算使用xml的方式也不行。要么每个业务独立配置xml中的sql,要么还是写入java代码中,或者以工具的方式进行自动拼接。 Mybatis使用映射的方式,方便model管理参数,同时以解析器的方式将参数动态拼接到sql(sqlmaper里那些标签)