攻防世界 supersqli writeup

在这里插入图片描述进入题目查看源码,提到sqlmap那就扫一扫
攻防世界 supersqli writeup_第1张图片发现有注入,注入点为injiect=2’,接下来–dbs尝试查询数据库,只爆出supersqli,但无法爆出表。
回到题目
攻防世界 supersqli writeup_第2张图片
order by 判断只有两个字段(别人的writerup说–+被过滤,只能使用#,不知道为什么没有,最后发现是在查询框里过滤了,在url框里没有)

在这里插入图片描述在使用union select时发现过滤关键字

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200313161718411.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZyZWVyYXRz,size_16,color_FFFFFF,t_7

接下来尝试堆叠注入,发现可行,爆出数据库名。

攻防世界 supersqli writeup_第3张图片执行show tables,爆出两表名
show columns from ` 1919810931114514/words (字符串为表名进行操作时要加反引号,,博客只能打出一个,两边加反引号显示不出)
把两个表里的列爆出
攻防世界 supersqli writeup_第4张图片攻防世界 supersqli writeup_第5张图片在一串数字的表里见到了flag列,flag极有可能在其中。
而在words表里发现结构id与查询的出的数据类型相同,一个数字,一个字符串,所以猜测默认查询的就是words表,inject值应该赋给了id。
发现并没有过滤rename和alter等,即可改变表的结构。
构造语句 ;alter tables words rename to words1;
alter tables 反引号1919810931114514反引号 rename to words;alter tables words change flag id
varchar(100);–+

先把words表名改为其他名,再吧1919810931114514表名改为words,但是其中还缺少id列,因此可以添加一个id列或者吧flag改为id,这样这个表就成为了默认查询表
在查询框里查询 1’ or 1=1 #
攻防世界 supersqli writeup_第6张图片

你可能感兴趣的:(攻防世界 supersqli writeup)