SQL注入—mysql基础语句

简介:常见的Web安全漏洞中,SQL注入利用和危害极大,通过其可以直接获取数据表的内容,从而获得Web站点的账号和密码,在学习SQL注入时,我们需要先对常见的数据库基础进行学习和了解。

MYSQL基础语句

一:数据库操作

1,在当前数据库管理系统中创建/删除数据库:create/drop dadabase websec;
2,查看当前数据库管理系统下所有数据库:show databases;
3,使用(进入)操作的数据库,use websec;

二:数据表操作

1,创建数据表:create table websec(id int(20) primary key AUTO_INCREMENT,name char(10) NOT NULL,sex char(10) NOT NULL);
2,查看当前数据库下的所有数据表:show tables;
3,查看数据表的内容:select * from websec;
4,删除数据表:drop table websec;
5,查看数据表属性:desc websec;

三:数据表中数据的增删改查(重要)

1,数据增加(insert into):
添加一行:insert into websec(id,name,sex)values(1,'zhangsan','boy');
添加两行或多行:insert into websec(id,name,sex )values(2,'xiaoming','boy'),(3,'lisi','girl');

2,数据删除(delete)
删除id为1的那一行:delete from websec where id=1;

数据修改(update):
将id=2的姓名修改为xiaozhang:update websec set name='xiaozhang' where id=2;

数据查看(select):
查看数据表的所有内容:select * from websec;/select id,name,sex from websec;

四:SQL注入中mysql常见函数

1,查看当前系统用户名/连接数据库用户名select user();

2,查看当前数据库名称和版本名称:select database();版本:select version();

3,读取当前数据库路径和安装的路径:读取数据库路径:select @@datadir ;安装数据库路径:select @@basedir;

数据表和数据库所在路径:

4,查看数据库所在当前操作系统版本: select @@version_compile_os;

5,从查询到的文本字段中截取某些字段函数mid() 如果此处函数中查询的是变量则不需要添加双引号,如果是直接的字符串,则需要通过双引号引起来,如下举例场景为变量,不需要添加双引号
函数格式及说明:mid(column_name,start,length)
column_name:必须,表明要查询的列名下的内容
start:必须,开始的节点,默认从1开始
length:可选,从开始的节点总共截取几个长度,如果省略表明展示剩下所有的字符
举例select mid(name,1,5) from websec where id=1;(查看websec表中,id等于1和name列下的字符串,并截取1到5的字符并显示出来)


6,limit()返回前几条或中间某几行数据
举例select * from websec limit 0,1;其含义是将查看显示出来的数据进行分部展示,通常使用在SQL注入中显示结果过多,但是每次只能显示一部分的情况下(这里的含义就是,查看表websec的全部内容,然后显示以索引0开始,长度为1的结果,和mid()函数的意思挺相似。

7,conut()函数:聚集函数,统计个数下图表示查看websec表中有多少行数据

8,rand()函数:用于产生一个0-1的随机数

9,floor()函数:向下取整

10,group by:依据我们想要的规则对结果进行分组:默认会将重复的数据行合并,只输出一个类型,如下

11,length()函数:返回字符串的长度。通常一个中文字符是2个字节,一个英文字符一个是一个字节
举例:

12,substr()函数:截取字符串
格式:substr(截取的字符串,开始的截取节点,截取的长度)
举例:

13,ASCII()函数:返回字符串的ASCII码
举例:select ascii(A);

总结:不管是mid函数,limit函数,substr函数,其后面跟随的参数都是通过某个地方开始,截取某个长度,区别不同的是mid和substr函数只能从1开始,而limit可以从0开始。

五:MYSQL数据库中注释符

1,常见注释符(#,--,/**/),#后面的内容被注释掉,通常#和–用于单行注释,/**/用于多行注释

2,内联注释
查询当前数据库版本信息:
/*select*/ version(); 不执行,因为select被注释

/*!select*/ version(); 被执行,因为!select被解析

/*!50000select*/version();也可以被执行

六:常见绕过过滤

1,空格绕过:
可以使用“+”,“/*内容*/”和“%0a,%0d”代替空格
2,分割SQL语句:
使用/**/%00%01%分割SQL语句

更多推荐

SQL注入—MYSQL基础语句(持续更新)附图