前言
本篇将讲解如何在修改密码时利用SQL注入漏洞获得数据库中我们想要的信息。
题目分析
题目页面如下:
还是老套路,先提交一个单引号试试:
结果如下:
可恶,不仅做了过滤,还嘲讽了一顿。照这个情况来看,这个网站的开发人员明显做足了功夫,这个站点很有可能不存在漏洞。但现在放弃还太早了,先用SQLMap扫描一遍再说,说不定就在哪个地方疏忽了呢?
SQLMap扫描
按照上一篇总结的方法,先用burpsuite抓包(为方便起见,这里以用户名admin为例):
保存为txt文件(笔者为保存在根目录下的demo.txt文件):
再用SQLMap扫描:
sqlmap -r /demo.txt -f
扫描结果如下:
什么嘛,用户名参数处理得那么严实,结果密码参数处理时还是存在漏洞的嘛,真是虎头蛇尾。之后就可以利用SQLMap直接获得数据库中的我们想要的信息了。但还是得讲讲手工注入方面的知识。
注入示例
既然已经知道了提交密码参数时存在注入漏洞,那么就以单引号作为密码提交以尝试触发错误:
结果如下:
页面打印了报错信息,并且从报错信息中可以知道闭合符为单引号。接下来就与先前讲过的利用报错注入的原理一致,只不过注入点变成了密码参数处。
总结
修改密码时使用的表单虽然与登录时用的表单有所不同,但注入的原理上大同小异,都是利用表单对参数过滤不严进行注入。