sql注入

python3操作PyMySQL笔记

巧了我就是萌 提交于 2020-02-29 10:42:20
python3操作mysql需要先安装PyMySQL pip install PyMySQL 在linux登录mysql ,并且在安装数据库时设置了数据库的用户名“root”和密码“root”,mysql安装的版本为mysql5.7 [root@web ~]# mysql -uroot -p -h192.168.10.100 在mysql里面创建一个mysql库 mysql> create database mrsoft; Query OK, 1 row affected (0.00 sec) 下面是新建一个py文件远程创建一个mysql连接,下面通过connect()方法连接MySQL数据库mrsoft,具体代码如下: import pymysql # 打开数据库连接, 参数1:主机名或者ip;参数2:用户名;参数3:密码;参数4:数据库名称;参数5:用utf8格式打开数据库表防止出现中文乱码 db = pymysql.connect("192.168.10.100", "root", "root", "mrsoft", charset="utf8") # 使用cursor()方法创建一个游标对象cursor cursor = db.cursor() # 使用execute()方法执行SQL查询 cursor.execute("SELECT VERSION()") #

SQL注入之联合查询注入

≯℡__Kan透↙ 提交于 2020-02-29 09:46:40
联合查询的步骤为: 1.判断是否存在注入点。   ‘and 1=1 #   ‘and 1=2 # 2.判断所在的数据库有几列   'order by 1 # 3.判断他显示的内容在数据库的第几列   yiz' union select 1 # 4.查找当前用户权限   yiz' union select user() # 5.查找当前数据库   yiz' union select database() # 6.查找数据库的表名   yiz'union select (select table_name from information_schema.tables where table_schema='grade' limit 0,1) # 7.查询数据库中表下的字段 yiz'union select (select group_concat(column_name) from information_schema.columns where table_schema='grade' and table_name='admins')# 8.查询数据库下字段中的内容。 yiz'union select (select group_concat(id ,0x3a,name,0x3a,pass) from grade.admins)# 来源: https://www.cnblogs

JDBC——PreparedStatement执行SQL的对象

ε祈祈猫儿з 提交于 2020-02-28 13:39:58
Statement的子接口,预编译SQL,动态SQL 功能比爹强大 用来解决SQL注入的 预编译SQL:参数使用?作为占位符,执行SQL的时候给?赋上值就可以了 使用步骤: 1.导入驱动jar包   复制jar包,粘贴到libs文件夹下。文件名可以任意,一般就叫libs   选择复制的jar包,右键,点击Add As Library 2.注册驱动 3.获取数据库的连接对象 Connection(本地的java代码和数据库的桥梁对象) 4.定义SQL语句   ①参数使用?作为占位符。例如:select * from user where username=? and password = ?; 5.获取执行SQL语句的对象 PreparedStatement Connection.prepareStatement(String sql) 6.给?赋值 7.执行SQL,接收返回结果,不需要传递SQL语句了(传递SQL语句时它父类Statement的方法,这个是子类特有的) 8.处理结果 9.释放资源 不使用Statement prepareStatement(String sql) 创建参数化的SQL语句发送到数据库的 PreparedStatement对象。 SQL注入 SQL注入:通过操作输入来修改SQL语句 在上个练习中,会产生SQL注入问题 ①用户名随便输 ②密码输入   

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

一笑奈何 提交于 2020-02-28 07:11:01
上一节 ,我们介绍了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

QCMS代码审计:XSS+SQL+后台getshell

僤鯓⒐⒋嵵緔 提交于 2020-02-27 14:45:34
qcms是一款比较小众的cms,最近更新应该是17年,代码框架都比较简单,但问题不少倒是。。。 网站介绍 QCMS是一款小型的网站管理系统。拥有多种结构类型,包括:ASP+ACCESS、ASP+SQL、PHP+MYSQL 采用国际标准编码(UTF-8)和中文标准编码(GB2312) 功能齐全,包括文章管理,产品展示,销售,下载,网上社区,博客,自助表单,在线留言,网上投票,在线招聘,网上广告等多种插件功能 程序和网页代码分离 支持生成Google、Baidu的网站地图 建站 说实话,官网写的是4.0.,安装确实3.0,然后下面写的是2.0,确实让人摸不清头脑 手动创建数据库即可,需要注意数据库要用MySQL5.0版本,向上会报错 数据库:qcms 后台账号密码: admin admin 漏洞复现 XSS 留言处是XSS重灾区,首当其冲就有一个 按照如图所示构造payload 提交之后无需审核,直接先弹个窗。。 登录后台再弹一个。。 查看数据库,没有过滤直接插入 SQLlike注入 在后台下载管理处 构造payload http://127.0.0.1/backend/down.html?title=1';select if(ascii(substr((select database()), 1, 1))-113, 1, sleep(5));%23 这里直接附上简单脚本 # !

Sqlparameter防SQL注入

自作多情 提交于 2020-02-27 05:14:27
一、SQL注入的原因 随着 B/S 模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 SQL Injection ,即SQL注入。 SQL注入是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看 IIS 日志的习惯,可能被入侵很长时间都不会发觉。 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL 语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。 二、 SQL 注入的一般步骤 首先,判断环境,寻找注入点,判断数据库类型。 其次,根据注入参数类型,在脑海中重构SQL 语句的原貌,按参数类型主要分为下面三种: (A) ID=49 这类注入的参数是数字型,SQL语句原貌大致如下: Select * from 表名 where 字段=49 注入的参数为ID=49 And [ 查询条件],即是生成语句: Select * from 表名 where 字段=49 And

ctfshow—web—web6

狂风中的少年 提交于 2020-02-26 11:56:42
打开靶机 发现登录窗,首先想到SQL注入 抓包,进行SQL注入测试 测试发现空格符被过滤了 使用/**/代替空格符进行绕过,绕过后登录成功 检测回显位 开始查询数据库名 开始查询数据库内数据表名称 查询表内字段名 查询字段信息 成功拿到flag 来源: https://www.cnblogs.com/anweilx/p/12365814.html

SQL回顾

筅森魡賤 提交于 2020-02-26 07:29:44
数据库的本质是一种特殊的文件 数据库是由数据表组成的,数据表是真正存储数据的 数据库客户端-->SQL语句-->数据库服务器-->数据库文件 表与表之间存在关联的数据库称为关系型数据库 (sql-server my-sql(5.1, 5.6, 5.7) Oracle(10g, 11g) db2) 非关系型数据库(mongodb redis) 唯一的标识一行信息的特殊的列 主键(primary key)不允许重复,不允许为空 当前表中的某个字段来自与另一张表中的主键的值,那么这个字段称之为 外键(foreign key) 列 字段 同一类的信息 行 记录 对象的详细信息 记录的集合组成数据表,数据表的集合组成数据库文件 DQL 数据查询语言 select DML 数据操作语言 insert, update, delete DDL 数据定义语言 create, drop 数据库服务端的安装 sudo apt-get install mysql 数据库客户端的安装 sudo apt-get install mysql-client 将程序的一些配置 写到配置文件中 修改的时候不用修改程序只需要修改配置文件即可(可以更好地保护程序源码) decimal() 占5位小数占2位 enum("情况1","情况2",..) 把所有可能出现的情况都列举出来 体积比较大的文件不存在数据库中

MyBatis完全使用指南

 ̄綄美尐妖づ 提交于 2020-02-26 05:57:07
MyBatis完全使用指南 转 http://www.jianshu.com/p/1c7c7d1bba33 MyBatis MyBatis作为一个轻量的SQL映射框架,确实很简单,但是知识点挺多,实际使用中还是会有时想不起来某个标签该怎么写,所以整理了这篇文章,以备查询。由于MyBatis如此简单,使得这一篇文章基本把实际使用中常碰到的事情都涵盖了,包括: MyBatis中的一些概念 MyBatis包含的内容 SQL映射 动态SQL 一、 MyBatis中的一些概念 MyBatis的架构 1. MyBatis 是个什么东西 在使用MyBatis的项目里,日志中往往会出现很多拼接SQL语句的log,这其实说明了MyBatis底层还是使用JDBC来实现的。在JDBC的基础上,为了性能考虑,所有的语句都是基于 SqlSession 。顾名思义,维护这个类的实例其实就是维护了一个对于某个数据库的连接的会话,在这个会话里可以有缓存啊什么之类的。 2. mapper 接口是怎么映射成SQL语句的 目前多数开发者还是会使用XML来进行MyBatis的配置,包括MyBatis的核心配置和SQL映射配置。其实和注解一样,XML本身只不过是一个元数据的载体,最终起作用的还是MyBatis的核心类。其中有这样几个比较重要的: SqlSessionFactoryBuilder ,用来创建

SQL注入绕过登录验证

孤街醉人 提交于 2020-02-26 05:29:37
最近测试发现一个登录处的SQL注入,不用密码即可登录系统。 首先在登录处输入“111'”,出现报错页面如图:判断可能存在注入 进一步利用万能用户名测试admin' or '1'='1,不用输密码成功登录。 分析一下这个payload: 从报错信息可以看出查询语句是: select * from xxxx where username=' ' and pwd=' ' 当我们输入payload之后就变成如下: select * from xxxx where username=' admin' or '1'='1' and pwd=' ' 这个查询语句执行之后的结果就是:username='admin' 是true(系统存在这个用户名),'1'='1'是true(后面发现这里是否为true也不重要),pwd=''是false。 true or true and false,由于and的优先级高于or,先运算true and false结果是false,再运算true or false结果是true(or运算:所有参数中的任意一个逻辑值为真时即返回TRUE(真))所以登录成功。 然后我利用sqlmap跑了一下,发现必须把admin加上才能成功,如果不加是跑不出来的,如图: 感觉这样的话,需要知道一个正确得用户名才行,还是有一定得局限性,我利用别的万能账户都不行,比如'or '1'='1-