sql注入

pymysql模块的使用

£可爱£侵袭症+ 提交于 2020-01-22 06:35:03
  实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中) import pymysql user = input('请输入用户名:') pwd = input('请输入密码:') # 1.连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', db='db8', charset='utf8') # 2.创建游标 cursor = conn.cursor() #注意%s需要加引号 sql = "select * from userinfo where username='%s' and pwd='%s'" %(user, pwd) print(sql) # 3.执行sql语句 cursor.execute(sql) result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目 print(result) # 关闭连接,游标和连接都要关闭 cursor.close() conn.close() if result: print('登陆成功') else: print('登录失败') execute() 之 slq注入: 最后那一个空格,在一条sql语句中如果遇到select * from userinfo

16-pymysql模块的使用

假装没事ソ 提交于 2020-01-22 06:34:43
本节重点: pymysql的下载和使用 execute()之sql注入 增、删、改:conn.commit() 查:fetchone、fetchmany、fetchall 一、pymysql的下载和使用   之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装。 (1)pymysql模块的下载 pip3 install pymysql (2)pymysql的使用 数据库和数据都已存在 # 实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中) import pymysql user = input('请输入用户名:') pwd = input('请输入密码:') # 1.连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='', db='db8', charset='utf8') # 2.创建游标 cursor = conn.cursor() #注意%s需要加引号 sql = "select * from userinfo where username='%s' and pwd='%s'" %(user,

python D40 pymsql和navicat

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-22 06:34:22
一 IDE工具介绍(Navicat)   生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。 二 MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 #3. 导出表: 将表导入到文本文件中。   一、使用mysqldump实现逻辑备份 #语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 db1 > db1.sql mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql #多库备份 mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql #备份所有库 mysqldump -uroot

Navicat工具、pymysql模块

馋奶兔 提交于 2020-01-22 06:34:04
cls超 Navicat工具、pymysql模块 阅读目录 一 IDE工具介绍 二 pymysql模块 一 IDE工具介绍(Navicat)   生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。 下载链接:https://pan.baidu.com/s/1bpo5mqj   Navicat的安装教程看这篇博客: https://www.cnblogs.com/clschao/articles/10022040.html    掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键 二 pymysql模块   我们要学的pymysql就是用来在python程序中如何操作mysql,它和mysql自带的那个客户端还有navicat是一样的,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的,既然是客户端套接字,应该怎么用,是不是要连接服务端

Navicat工具、pymysql模块

℡╲_俬逩灬. 提交于 2020-01-22 06:33:47
一 IDE工具介绍(Navicat)   生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。   下载连接: https://pan.baidu.com/s/1bpo5mqj   Navicat的安装教程看这篇博客: https://www.cnblogs.com/pythoncainiao/p/10296069.html 掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键 二 pymysql模块   我们要学的pymysql就是用来在python程序中如何操作mysql,它和mysql自带的那个客户端还有navicat是一样的,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的,既然是客户端套接字,应该怎么用,是不是要连接服务端,并且和服务端进行通信啊,让我们来学习一下pymysql这个模块 #安装 pip3 install pymysql

我终于学会了使用python操作postgresql

落爺英雄遲暮 提交于 2020-01-22 03:52:38
一 前言 这篇文章不仅适合pgsql,更适合mysql,思路都是一致的,如果读者学会使用psycopg2操作pgsql,那么使用PyMySQL 操作mysql也是很简单;本篇文章涵盖内容广泛,提供的操作选择性很多,比如多种数据插入操作,防止sql注入方式,异常处理,sql语句打印处理,显示行号等操作,一篇文章真的收益匪浅;觉得知识追寻者文章不错,随手点赞谢谢。如果看了作者文章有收获,不关注都是耍流氓。 二 数据库连接 2.1 安装 psycopg2 # pip install psycopg2 2.2 连接数据库 每条完整的sql执行步骤如下,读者应谨记; 建立连接获得 connect 对象 获得游标对象,一个游标对象可以对数据库进行执行操作,非线程安全,多个应用会在同一个连接种创建多个光标; 书写sql语句 调用execute()方法执行sql 抓取数据(可选操作) 提交事物 关闭连接 # -*- coding: utf-8 -*- import psycopg2 # 获得连接 conn = psycopg2.connect(database="python", user="postgres", password="123456", host="127.0.0.1", port="5432") # 获得游标对象 cursor = conn.cursor() # sql语句 sql

Mybatis 学习笔记 -雷云龙

纵然是瞬间 提交于 2020-01-21 17:53:32
Mybatis 学习笔记 -雷云龙 一 、mybatis概述 mybatis是java持久层框架,即是操作数据库的。内部封装了jdbc,只需要关注sql 本身 mybatis通过xml 或者注解 的方式将需要执行的statement配置起来,并通过java对象和statement中sql 的动态参数进行映射,最终生成完整的sql,最后mybatis 执行sql 并将结果映射成对象返回 采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装 二、mybatis 入门 1、环境搭建 1.坐标 < dependencies > < dependency > < groupId > org.mybatis </ groupId > < artifactId > mybatis </ artifactId > < version > 3.5.0 </ version > </ dependency > < dependency > < groupId > mysql </ groupId > < artifactId > mysql-connector-java </ artifactId > < version > 5.1.6 </ version > < scope > runtime </ scope > </ dependency > < dependency > <

sql注入知识笔记

℡╲_俬逩灬. 提交于 2020-01-21 16:17:29
sqli-labs实验环境 http://43.247.91.228:84/ 注入的分类 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 •基于布尔 SQL 盲注 •基于时间的 SQL 盲注 •基于报错的 SQL 盲注 基于如何处理输入的 SQL 查询(数据类型) •基于字符串 •数字或整数为基础的 基于程度和顺序的注入(哪里发生了影响) ★一阶注射 ★二阶注射 一阶注射是指输入的注射语句对 WEB 直接产生了影响,出现了结果;二阶注入类似存 储型 XSS,是指输入提交的语句,无法直接对 WEB 应用程序产生影响,通过其它的辅助间 接的对 WEB 产生危害,这样的就被称为是二阶注入. 基于注入点的位置上的 ▲通过用户输入的表单域的注射。 ▲通过 cookie 注射。 ▲通过服务器变量注射。 (基于头部信息的注射) 常用函数 1. version()——MySQL 版本 2. user()——数据库用户名 3. database()——数据库名 4. @@datadir——数据库路径 5. @@version_compile_os——操作系统版本 字符串连接函数 1. concat(str1,str2,...)——没有分隔符地连接字符串 2. concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串 3. group

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