Pages

Thursday, 31 July 2014

图形验证码上的SQL注入点

网站挺简单,就是一些宣传页。但我觉得肯定得有后台系统。果然没多久就被我找到了,PHP+MySQL做的。登录输用户名+密码,另外还有图形验证码,没 有SQL注入漏洞。看来开发者对登录这块还是相当注意的。又看了几个页面,还是没有注入点。我想撤,但又有点儿不甘心。向这种非法组织的服务器下手,基本 上是没有法律风险的。他们显然不敢报警。所以我又回到登录界面上。在看HTML代码的时候,图形验证码那部分吸引了我。

我发现他们的图形验证码没有用Session来控制,用的是URL传参,GET方式。也就是说在URL中给出了一个数字,然后服务器上返回一个生成的验证 码图片。我在表单中也找到了那个数字,试着刷新了一下页面,数字加了1。用旧的URL还是能拿回原来那幅图片,但一旦该图片中的验证码被【使用】过,就不 能再拿到了。

这意味着什么?这意味着验证码与这个数字之间有某种联系,某种对应关系。这个联系可能是Hash出来的,但根据现象,更可能是存下来的。我决定赌一把。果然,验证码图片的URL存在SQL注入点。每次读出来的是存起来的四个字母,然后交给PHP生成图片。

也许开发者认为,就算被注入,入侵者面对着四个字母的图片也干不了什么破坏。但他可能忘了有MID这个函数。我利用这个漏洞确认了admin这个用户名确 实存在,也拿到了Hash过的密码。不过接下来我收手了。我想再潜伏一段时间再动手。结果一个月之后,我再去看的时候,这个服务器已经不在了,网站也不在 了。大概被警方打掉了吧,可惜!

在这个故事里面,我想强调的是,SQL注入每一个地方都要防!哪怕再小的漏洞,也能造成危害,一个都不能疏忽.