sql注入

Spring Boot 2.x基础教程:使用国产数据库连接池Druid

混江龙づ霸主 提交于 2020-02-11 14:59:00
上一节 ,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP。接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid。 Druid 是由阿里巴巴数据库事业部出品的开源项目。它除了是一个高性能数据库连接池之外,更是一个自带监控的数据库连接池。虽然HikariCP已经很优秀,但是对于国内用户来说,可能对于Druid更为熟悉。所以,对于如何在Spring Boot中使用Druid是后端开发人员必须要掌握的基本技能。 配置Druid数据源 这一节的实践我们将基于 《Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库》 一文的代码基础上进行。所以,读者可以从文末的代码仓库中,检出 chapter3-1 目录来进行下面的实践学习。 下面我们就来开始对Spring Boot项目配置Druid数据源: 第一步 :在 pom.xml 中引入druid官方提供的Spring Boot Starter封装。 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> 第二步 :在 application

某waf实战SQL注入绕过fuzz过程

感情迁移 提交于 2020-02-11 12:08:55
QQ交流群:876554035 #01 环境简介 服务器:windows2008 R2 软件:phpstudy20180211 php 5.4.45 mysql 5.5.53 某锁win_3.1.18.13服务端版本 #02 Fuzz过程 以基于union注入为例 fuzz order by 过程如下: ?id=1’ order --+ 不拦截 ?id=1’ order by --+ 拦截 nna那应该是waf匹配了order+by ?id=1’ order / !by / --+ 拦截 ?id=1’ order / !60000by / 1 --+ 不拦截,但是报错 翻译过来:您的SQL语法有误; 检查与您的MySQL服务器版本相对应的手册,以在第1行的’1-'LIMIT 0,1’附近使用正确的语法 那么猜测是要低于mysql的版本吗?(我在fuzz某狗的时候里面的数字要高于50000以上,可能某锁要低于mysql版本,便随便试了个200000) ?id=1’ order / !20000by / 3 --+ 不拦截,且执行成功 ?id=1’ / !20000order /by 3–+ 不拦截,且执行成功 ?id=1’ / !20000order /by 4–+ 用过狗payload去试试,首先替换空格 ?id=1’ order/**/by --+ 拦截 ?id=1’ order

sql注入学习笔记 详解篇

亡梦爱人 提交于 2020-02-10 10:38:17
sql注入的原理以及怎么预防sql注入(请参考上一篇文章)      https://www.cnblogs.com/KHZ521/p/12128364.html (本章主要针对MySQL数据库进行注入) sql注入的分类:   根据注入类型分类:     1.union联合注入     2.报错注入     3.盲注       布尔类型盲注       延时盲注   根据注入位置分类     get注入     post注入     请求头注入   根据sql语句不同分类     数字型注入     字符型注入 sql 注入的步骤:   1.寻找注入点     哪些地方可能存在注入点(所有与数据库交互的地方都有可能存在注入点)     一般get请求注入点判断的方式,例:假设参数为?id=1在携带参数的后面使用?id=1',(请注意单引号,如果单引号被数据库查询) ?id=1' //使用单引号使数据库报错,引发数据库异常(有时候使用双引号闭合的时候,单引号是不会报错的 在可能存在注入点的地方多尝试就好了)假如提交了?id=1'//和id=1时候出现出现明显不一样的页面,就表示可能存在注入点,当然,也有可能是被waf拦截了 //假设php中查询的sql语句为 sql = "select * from user where id='$id' limit 0,1";

Go操作MySQL

青春壹個敷衍的年華 提交于 2020-02-09 17:02:01
MySQL是常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 连接 Go语言中的 database/sql 包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用 database/sql 包时必须注入(至少)一个数据库驱动。 我们常用的数据库基本上都有完整的第三方实现。例如: MySQL驱动 下载依赖 go get -u github.com/go-sql-driver/mysql 使用MySQL驱动 func Open(driverName, dataSourceName string) (*DB, error) Open打开一个dirverName指定的数据库,dataSourceName指定数据源,一般包至少括数据库文件名和(可能的)连接信息。 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { // DSN:Data Source Name dsn := "user:password@tcp(127.0.0.1:3306)/dbname" db, err := sql.Open("mysql", dsn) if err != nil { panic(err) } defer db.Close() // 注意 } 思考题 :

基础篇——SQL注入(工具注入)

这一生的挚爱 提交于 2020-02-09 16:28:28
注入工具   上一篇介绍了SQL注入漏洞以及一些手工注入方法,本篇介绍一下注入工具   1、sqlmap     sqlmap属于比较经典的一个注入工具,功能强大,还自带一些绕过参数     使用方法:       sqlmap.py -u “url” 对url连接进行注入检测       然后使用注入参数进行注入       -u //添加url进行检测       -dbs //进行数据库检测       -tables //猜解数据库表       -colums //猜解字段       --level 1~5 //设置注入等级最高5级       --risk 1~3 //设置危险等级       --data “参数内容” //post注入       -r 1.txt //对1.txt内容进行注入       --delay //延时     sqlmap自带绕过脚本temper     使用方法:       --temper 脚本名称     列出一些脚本:       apostrophemask.py 用UTF-8全角字符替换单引号字符       apostrophenullencode.py 用非法双字节unicode字符替换单引号字符       appendnullbyte.py 在payload末尾添加空字符编码       base64encode

dvwa模拟实验——sql盲注

柔情痞子 提交于 2020-02-09 01:11:32
sql盲注 1.sql盲注的基本内容 1.1 sql注入与盲注的区别 盲注:目标只会回复是或者不是,没有详细内容; 注入:可以查看到详细的内容 1.2 sql盲注的过程 判断是否存在注入,注入是字符型还是数字型 猜解当前数据库名–>猜数据库的长度–>猜数据库的名称 猜解数据库中的表名–>猜表的数量–>猜表的长度–>猜表的名称 猜解表中的字段名–>猜列的数量–>猜列的长度–>列的名称 1.3 sql盲注的类型 基于布尔值的盲注 基于时间的盲注 基于报错的盲注 2. DVWA模拟实验 了解一个关键函数: 2.1 low等级 1.分析源代码 从源码中可以看出并没有任何防御措施,存在sql注入漏洞,并且注入类型是字符型。 但是输出只有两句话,所以应该采用盲注的方法。 2.手动盲注过程 (1)猜测数据库名的长度 从1开始试,一直到页面返回正确。 (2)猜测数据库的名称 利用二分法,并对照ASCII码表可以得到数据库名四个字符分别是什么 1' and ascii(substr(database(),1,1))=100 # 1' and ascii(substr(database(),1,1))=118 # 1' and ascii(substr(database(),1,1))=119 # 1' and ascii(substr(database(),1,1))=97 # 得到数据库的名称

下面是对初学者数据库增删改查BaseDao的一个封装

試著忘記壹切 提交于 2020-02-08 23:40:08
大体步骤是: 1.将所有要读取的路径都写在db.properties的一个文件中,方便我们进行后续的维护 2.增删改查的sql语句写到专门的一个mapper.xml文件中,方便我们的使用 3.写一个只用来读取db.properties文件的工具类ReadPropertiesUtils 4.写一个只用来读取mapper.xml文件的工具类MapperUtils 5.导入五个jar包(等下我把jar包发到文件中) 6.写mysql的增删改的工具类MysqlCrudUtils 7.写数据库CURD的工具类JDBCUtils 8.写实体类 9.写一个增删改的测试类TestAddDeleteUpdate ------------------------------------------------------------------------------------ 下面是代码的呈现,按照步骤进行呈现 ------------------------------------------------------------------------------------------- 第一步 db.properties mapper_url=mapper.xmldriver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/lj

pymsql及事务

南笙酒味 提交于 2020-02-08 04:37:14
MySQL知识点补充 1、去重 distinct select distinct name,age from t1; # 针对查找出来的结果整行(记录)进行去重,也就是相同行只保存一个 注意点:distinct 必须放在查询列的第一个(放后面就会报错) 2、保存操作记录 tee tee D:a.txt; 可以把你对于MySQL的所有操作都记录到D盘下的a.txt中(包括一些报错信息) pymysql包的基本用法 基本的查看 import pymysql # 导入pymysql包 conn = pymysql.connect(host='localhost',user='root',password='123',database='db1',charset='utf8') # 连接mysql服务器,必须指定主机、用户、密码和你要使用的数据库 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 实例化拿到光标对象,可以对服务器发送sql语句 # cursor=pymysql.cursors.DictCursor是为了让输出变成字典(列名与值对应),不设置的话就是元组 sql = 'select * from t1 where id > %s'% 1 # 写的sql语句不需要封号结尾,如果需要给sql语句传参,需要通过

pysql

♀尐吖头ヾ 提交于 2020-02-08 04:34:37
1.python语言操作mysql的包: import pymysql # 连接mysql服务器 conn = pymysql.connect(host='localhost', user='root', password='123',database='db2', charset='utf8') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select * from student where id > %s " % (12,) # sql = cursor.execute(sql) # res = cursor.fetchone() res = cursor.fetchmany(10) # res = cursor.fetchall() ### 列表里面套字典 print(res) cursor.close() conn.close()import pymysql # 连接mysql服务器conn = pymysql.connect(host='localhost', user='root', password='123',database='db1', charset='utf8')cursor = conn.cursor(cursor=pymysql.cursors.DictCursor

MyBatis(一)

泪湿孤枕 提交于 2020-02-08 01:12:29
一、MyBatis介绍 mybatis是一个 半ORM (Object Relational Mapping对象关系映射)持久层框架, 底层封装了JDBC ,开发只需关注SQL,无需处理加载驱动、创建连接等重复工作。 二、MyBatis优点 解耦 :直接编写SQL,解除SQL与程序代码的耦合; 动态SQL :提供xml标签,支持编写动态sql; 代码少 :减少代码量,不需要手动加载驱动、创建连接等处理过程; 性能好 :直接编写原生态sql,严格控制sql执行性能,灵活度高。 兼容各种数据库 :MyBatis底层使用JDBC来连接数据库,只要JDBC支持的数据库MyBatis都支持; 集成spring ; 对象与字段映射 :提供映射标签,支持对象与数据库的ORM字段关系映射;提供了关系映射标签,支持对象关系组件维护。 三、MyBatis缺点 编写 大量SQL 语句,需要对sql有一定理解; 数据库 移植性差 :SQL语句依赖于数据库,不能随便更换数据库。 四、MyBatis与Hibernate区别 区别 MyBatis Hibernate 框架 半ORM框架 全ORM框架 优点 编写原生态sql,直接对sql性能优化,灵活度高,与代码解耦 对象关系映射能力强,平台无关性好 缺点 需编写大量sql,不支持数据库无关性 不能自主对sql优化,设置映射需考虑性能与对象模型的权衡 适用项目