/user/index.asp
tg子程序调用getIP()获得用户IP,看看这个getIP函数:
没有过滤。
所以我们可以在HTTP_X_FORWARDED_FOR插入任何字符进行注入。关键问题是怎么出数据。
因为我们这个select没有直接出数据的地方,有些人可能说是个鸡肋,不过我不这么看。
我们来仔细看看代码:
这里含注入的sql语句执行完成以后,判断是否有结果,如果没有结果的话,就会进入上面这个if语句,我们在if语句后手动加一个response.end看看什么效果:
如上图我们发现这个盲注是有效的,当然因为我这里加了一个response.end所以才会有这个效果,如果我没有改变代码的话,二者的返回结果还是一样的。
那么我们接下来怎么办?
我们看到代码:
进入if语句后会执行一个update,这个update是完成修改用户积分的一个功能。我们可以在用户页面看到这个积分项:
所以,在注入的时候,我们可以通过这个积分项的变化来进行盲注。
举个例子,首先查看自己的当前积分:
这是我的注入语句:
密码的第一个字母的ascii码大于1000,肯定是不成立的,发送数据包以后查看自己的积分:
如上图, 积分已经增加了1。
如果把注入语句改一下:
密码的第一个字符ascii码大于0,肯定是成立的,发包后再看自己的积分:
还是不变的19。通过自己积分的变化,就能盲注出数据。
这就是这个盲注的利用方法,虽然有些复杂,但是依旧是一个“可以利用”而不鸡肋的漏洞!