Web渗透测试之SQL注入:基于错误的登录界面绕过(二)

前言

  该篇与上一篇在绕过登录界面的思想基本一致,不同点在于绕过后获得想要的信息的手段。因此本篇将围绕获取数据的手段展开。

题目分析

题目页面如下:
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
按照上一篇的套路,先尝试提交一个单引号:
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
结果如下:
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
可以发现页面已经打印出了错误信息,这就很棒。

登录界面绕过

  仔细分析可以发现整个语句大致如下:
……username = (’’) and password = (’’)
因此闭合符应为(’’),接下来的步骤与上一篇基本一致。先随意构造用户名,再输入语句:’) or (‘1’) = ('1
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
结果如下:
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)

导出数据

  与上次不同地是,这次登录成功后页面并没有打印任何可控的信息,因此无法使用联合查询注入。但最起码还能打印错误信息,因此可以使用报错注入。在先前讲get函数的报错注入时提到过报错注入主要有两种方式:利用XPATH语法错误进行报错以及floor三件套
extractvalue:
') and extractvalue(1,concat(0x7f,(select database()))) - -
(再提一嘴,这里是连续两个减号一个空格)
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
结果如下:Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
updatexml:
') and updatexml(1,concat(0x7f,(select database())),1) - -
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
结果如下:
Web渗透测试之SQL注入:基于错误的登录界面绕过(二)
floor三件套:
') and (select 1 from (select count(*) ,concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a) - -
post函数本身是没有字符数限制的,但浏览器和服务器处理能力的不同会对字符串过长部分进行截断,因此尽管该语句语法上正确但无法生效。

总结

  尽管绕过登录界面后网页没有打印出任何可控信息,但却能打印错误信息,因此可以利用这一点进行报错注入,从而获得我们想要的信息。
  以上就是本篇的全部内容,我们下篇见。