渗透测试之地基服务篇:服务攻防之数据库Mysql(下) – 作者:dayuxiyou

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

数据库作为业务平台信息技术的核心和基础,承载着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,数据库的安全稳定运行也直接决定着业务系统能否正常使用。并且平台的数据库中往往储存着等极其重要和敏感的信息。这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。所以对数据库的保护是一项必须的,关键的,重要的工作任务。

通过前几期钓鱼、内网攻防篇章落幕后,引来了服务攻防篇章之数据库渗透篇,不管在外网还是内网环境,只要存在业务系统都存在数据库,在渗透测试对数据库的知识学习是必不可少的,接下来将介绍数据库的渗透基本操作,带小伙伴们了解和学习数据库如何渗透的!

二、查询数据

1、表单查询

1625812535_60e7ee37c381d5f248793.png!small?1625812537835

1. select * from biao1;   #查询所有数据
2. select username from biao1;    #查询单个类型数据
3. select username,password from biao1;   #查询多个类型数据

2、按条件查询

1625812539_60e7ee3b243f729bb8e0c.png!small?1625812539459

命令:

select * from biao1 where id=1;
#按指定条件查询
select * from biao1 where id<=1;

关系运算符说明:
= 	等于
<> 	不等于
!= 	不等于< 小于
<= 	小于等于
> 	大于
>= 	大于等于

3、带 IN 关键字的查询

1625812544_60e7ee408a24bc15a7acd.png!small?1625812544946

命令:

select * from biao1 where id in(1,2,3);
select * from biao1 where id not in(1,2,3);

4、空值查询

1625812549_60e7ee454d30d7105791c.png!small?1625812549822

命令:

select * from biao1 where id is not null;
select * from biao1 where id is null;

5、去掉重复查询

1625812553_60e7ee497684057ea4d53.png!small?1625812554375

命令:

select distinct username from biao1;

6、带 LIKE 关键字进行模糊查询

常用百分号通配符:
1625812558_60e7ee4ea9c831857543d.png!small?1625812559632

命令:

select * from biao1 where username like "d%";
select * from biao1 where username like "%d%";

下划线通配符:
1625812563_60e7ee53e8689225c090f.png!small?1625812564511

命令:

select * from biao1 where username like "dayu_";   
select * from biao1 where username like "d____";
#一个数值加一个_

7、带 AND和or 关键字的多条件查询

带 AND 关键字的多条件查询:
1625812568_60e7ee589843ae63018b9.png!small?1625812569067

命令:

select * from biao1 where id<7 and username='test1';

带 OR 关键字的多条件查询:
1625812573_60e7ee5d14786be8d7a08.png!small?1625812574307

命令:

select * from biao1 where id<7 or username='test1';
select * from biao1 where id=5 or username='test1';

OR 和 AND 一起使用:
1625812577_60e7ee61bc99a564538c1.png!small?1625812578503

命令:

select * from biao1 where id>2 and password='12345116' or username='test';
select * from biao1 where id>2 and password='123456' or username='testa';
select * from biao1 where id>2 and password='123456' or username='test11'

OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。

三、高级查询数据

1、聚合查询

1625812583_60e7ee67e37fe743bc51d.png!small?1625812585843

命令:

select count(id) from biao1;
select count(*) from biao1;

select sum(id) from biao1;
select avg(id) from biao1;
select max(id) from biao1;
select min(id) from biao1;

COUNT() 	返回某列的行数
SUM()		返回某列值的和
AVG() 		返回某列的平均值
MAX() 		返回某列的最大值
MIN() 		返回某列的最小值

2、分组查询

1)单独使用 GROUP BY 进行分组
1625812590_60e7ee6ec2603b1c1f8f8.png!small?1625812591240

命令:

select * from biao1 group by password;
select * from biao1 group by username;

2) GROUP BY 和 HAVING 关键字一起使用
1625812595_60e7ee73da13d96c50895.png!small?1625812596330

select max(id) from biao1 group by username;
select count(id) from biao1 group by username;

HAVING关键字和WHERE关键字的作用相同,区别在于HAVING 关键字可以跟聚合函数,而 WHERE 关键字不能。通常HAVING 关键字都和GROUP BY一起使用,用于对分组后的结果进行过滤。

例如:

1625812600_60e7ee789585a111d1b72.png!small?1625812601116

命令:

select * from biao1 group by username having sum(id)<6;
#查询sum函数求和中小于6的数据返回

3、使用 LIMIT 限制查询结果的数量

1625812604_60e7ee7cecb5365d7b0f2.png!small?1625812605757

命令:

select * from biao1 limit 1;
select * from biao1 limit 4;
select * from biao1 limit 1,5;  #显示1~5的结果

4、为表和字段取别名

1)为表取别名

来源:freebuf.com 2021-07-09 14:34:04 by: dayuxiyou

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享