攻防世界 supersqli writeup

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

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

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

在这里插入图片描述执行show tables,爆出两表名
show columns from `1919810931114514` ;–+
把两个表里的列爆出
在这里插入图片描述在这里插入图片描述在一串数字的表里见到了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 #
在这里插入图片描述
[GYCTF2020]Blacklist可以算这道题的进化版,过滤更严,需要另一种方法。详细可参考https://blog.csdn.net/freerats/article/details/107735132

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值