/*
作者刚刚接触sql注入,本文仅用作记录刷sqli-labs靶场时的思路,仅代表个人的看法,如有不当之处,欢迎各位大佬及时批评指正!
*/
sqli-labs 前四关的注入思路是基本相同的,这一点从关卡名称上也可以大致看出,都是基于报错(Error Based)的注入,因此本文只简单阐述第二、三、四关的注入点探测思路,具体的注入过程可以参考上一篇文章【SQLi-Labs刷题记录】 Less1第一关思路。
sqli-labs Less-2
首先,根据提示输入id参数
构建url:…/Less-2/?id=1页面显示正常,能够正常输出查询结果
然后,在原url后加入and 1=2,查看是否可以直接注入
构建url:…/Less-2/?id=1 and 1=2
页面未报错,查询结果为空,表明存在注入点,and查询被直接代入到了原查询语句中,可以直接在后面进行联合查询
(PS:因为本关是数字型注入,没有引号/括号的包裹,所以注入点更容易被发现)
sqli-labs Less-3
第一步,根据提示输入id参数
构建url:…/Less-3/?id=1
页面显示正常,能够正常输出查询结果
第二步,在原url后加入and 1=2,查看是否可以直接注入
构建url:…/Less-3/?id=1 and 1=2
网页能够正常返回结果,表明and查询被过滤掉并未代入查询。
第三步,尝试加入单引号,获取数据库的反馈信息
构建url:…/Less-3/?id=1’
网页报错,报错信息为:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’) LIMIT 0,1’ at line 1。根据报错信息我们不难发现,在我们手动加入一个单引号之后,原有的查询语句中的引号对被我们破坏,同时,报错信息中还提示了原有的查询语句中还有一个括号,因此我们可以猜测原有的查询语句大约为:select * from table where id=(‘input’) limit 0,1。其中,input就是我们输入的内容。
第四步,为了验证我们的猜测,我们构造新的url
构建url:…/Less-3/?id=1’) and 1=2 --%20
网页显示正常,查询结果为空,这说明我们的猜测是正确的,注入点已经被找到,我们在and 1=2后面加上联合查询语句就可以进一步探索我们下需要的信息了。
sqli-labs Less-4
第一步,根据提示输入id参数
构建url:…/Less-4/?id=1
页面显示正常,能够正常输出查询结果
第二步,在原url后加入and 1=2,查看是否可以直接注入
构建url:…/Less-4/?id=1 and 1=2
网页能够正常返回结果,表明and查询被过滤掉并未代入查询。
第三步,尝试加入不同形式的引号,以获取数据库的反馈信息
构建url:…/Less-4/?id=1’
正常返回查询结果
构建url:…/Less-4/?id=1’)
正常返回查询结果
构建url:…/Less-4/?id=1"
网页报错,报错信息为:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘“1"”) LIMIT 0,1’ at line 1。根据报错信息我们可以发现在我们手动加入一个双引号之后,原来的双引号对被破坏,从而报错。因此我们可以猜测原有的查询语句大约为:select * from table where id=(“input”) limit 0,1。其中,input就是我们输入的内容。
第四步,为了验证我们的猜测,我们构造新的url
构建url:…/Less-4/?id=1") and 1=2 --%20
网页显示正常,查询结果为空,这说明我们的猜测是正确的,注入点已经被找到,我们在and 1=2后面加上联合查询语句就可以进一步探索我们下需要的信息了。
以上就是sqli-labs第二、三、四关的注入点查找思路。如有不当之处,欢迎大佬们留言批评指正!