CTFWEB笔记

目录

[极客大挑战 2019]EasySQL1

[强网杯 2019]随便注 

[极客大挑战 2019]Havefun

[SUCTF 2019]EasySQL


 

[极客大挑战 2019]EasySQL1

可见是一个sql注入,我们随意尝试字符型

此路可通

万能密码注入后得到flag。

 


[强网杯 2019]随便注

简单的尝试

报错了

用select 查找数据库

被ban了

用分号分隔命令查表

desc words后

能找到id的字段;这往后就触及到了我的盲区了。直接上大佬的答案

因为可以堆叠查询,这时候就想到了一个改名的方法,把words随便改成words1,然后把1919810931114514改成words,再把列名flag改成id,结合上面的1' or 1=1#爆出表所有内容就可以查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;desc  words;#


[极客大挑战 2019]Havefun

简单.....


[SUCTF 2019]EasySQL

1可以,而1' 无响应。说明 ' 被过滤掉了

提交  1;show databases;#

show tables后

flag就在 flag表单中

然后select 被过滤....到这里我彻底没辙了奥。

直接求助大佬

大佬直接猜出了后端查询的代码 :

这道题目需要我们去对后端语句进行猜测,有点矛盾的地方在于其描述的功能和实际的功能似乎并不相符,通过输入非零数字得到的回显1和输入其余字符得不到回显来判断出内部的查询语句可能存在有||,也就是select 输入的数据||内置的一个列名 from 表名,进一步进行猜测即为select post进去的数据||flag from Flag(含有数据的表名,通过堆叠注入可知),需要注意的是,此时的||起到的作用是or的作用

select $_GET[‘query’] || flag from flag

解法1:

这样我们就可以构造url : *,1

这样就会造成select *, 1||flag from Flag;

也就是select * ,1 From flag(flag中全部的数据,和一个全为1的临时列)

解法2:

将||的作用由or变为拼接字符串

输入1;set sql_mode=pipes_as_concat;select 1

变为了 select 1;select 1||flag from Flag;

|| 相当于是将 select 1 和 select flag from flag 的结果拼在一起

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值