SUCTF easysql;极客大挑战 easy sql;从0到1:CTFer成长之路 sql注入-1

一、SUCTF easysql

方法一

第一步:没有提示,就自己尝试
首先尝试输入字母,发现页面如下
在这里插入图片描述
然后尝试输入数字,发现页面如下
在这里插入图片描述
在sql中,select语句中select后面跟着的关键字是可以用逻辑运算符的,并且逻辑运算符不同,逻辑运算符两边的判断条件不同*(比如是数字还是字符,数字是0还是大于0,字符是存在的表名还是不存在的字符串)*最终语句回显的结果也不同,由以上两点我们可以判断select后面的关键字可能是 【输入的的数据】||【数据库上的一个字段名】 或者 【输入的数据】&&【数据库上的一个字段名】。
那么大胆猜测他的语句是

select 【输入的的数据】(&&)||【字段名】 from table_name

此时我们对语句进行构造可以发现,如果我们输入"*,1“,那么语句将会变成这样

select  *,1(&&)|| 【字段名】 from table_name

这句话的意思是将表中的全部信息和字段名为”1(&&)||【字段名】“的信息返回出来,如果理解不了,那可以看下图,这句话执行之后数据库不会报错,回显的信息形式如下
在这里插入图片描述
其实也不用深究回显会是怎样,只要知道这样构造出来的语句会回显表中的所有数据,那么在这道题中输入会有如下效果
在这里插入图片描述
这道题就解出来了

方法二

第二种方法,用的是堆叠注入,将sql_mode变量的值设为pipes_as_concat,这样输入的数据值为1,最后结果是一样的

二、极客大挑战 easy sql

包裹方式是单引号,username是admin,纯试出来的

三、从0到1:CTFer成长之路 sql注入-1

很标准的注入注入语句+耐心就能做出来

select group_concat(schema_name) from information_schema.schemata
select concat(table_name) from information_schema.tables where table_schema=库名
select concat(column_name) from information_schema.columns where table_name=表名
select 列名 from 表名 

四、三道题做完之后的反思

思路的时候不是一撮而就的,是不断试错试出来的,这个过程需要耐心和对基础的掌握。
同时值得提醒的是,对于ctf种的sql注入来说,一开始不要想那么多,不要看题给的提示,先试试包裹,先试试字符还是数字,过度的关注提示,可能会导致过度解读,对做题反而没好处。
三道题其实都很基础,顶多suctf那道用到一个sql的特性,剩下两道一道我称之为运气,一道我称之为耐心,都是ctf中的技能呀。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SuperForming

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

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

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

打赏作者

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

抵扣说明:

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

余额充值