木子屋 Dnawo's BLOG

PJBlog3 V3.2.9.518可恶意注册BUG解决方法

👤 dnawo 📅 2014-12-20 👁 844533 👍 0 💬 1 🔄 本站原创
前天发现博客会员数增加了很多,查了下,很多属于恶意注册用户并且已持续了几个月:

图片

图片

搜索IIS日志,能查到对应的POST信息:

2014-12-18 07:29:05 W3SVC179938905 42.121.105.222 POST /register.asp - 80 - 178.43.73.53 Mozilla/5.0+(Windows+NT+6.1)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/27.0.1453.116+Safari/537.36 404 0 2

这说明恶意注册都是通过提交表单完成的,会不会是验证码被破解了?清除完恶意记录,对验证码进行了升级,但是昨天查看恶意注册仍在继续,会不会是数字验证码太容易破解?再次升级用中文验证码,今天查看恶意注册还在进行中😭

修改register.asp文件,保存注册数据,得到如下信息:

username=Ldoo88w6j&password=qwedsa&Confirmpassword=qwedsa&Gender=0&email=&hiddenEmail=1&homepage=http%3A%2F%2Fcompresseibrig.eu&validate=&action=save&submit2=%E6%B3%A8%E5%86%8C%E6%96%B0%E7%94%A8%E6%88%B7

validate值为空,空验证码也可以注册?在页面上试了下,不行,但放在Fiddler2中提交却注册成功了,为什么?打开register.asp看了下相关程序:

If CStr(LCase(Session("GetCode")))<>CStr(LCase(validate)) Then
    ReInfo(0) = "错误信息"
    ReInfo(1) = "<b>验证码有误,请返回重新输入</b><br/><a href=""javascript:history.go(-1);"">单击返回</a>"
    ReInfo(2) = "ErrorIcon"
    register = ReInfo
    Exit Function
End If

明白了,这边有个BUG:

用第三方程序提交时,不调用common/getcode.asp,验证码Session("GetCode")的值为空,所以空验证码也能注册。

解决方法:打开register.asp文件,修改程序如下(166行):

If CStr(LCase(Session("GetCode")))<>CStr(LCase(validate)) [color=Red]Or Session("GetCode")=""[/color] Then
    ReInfo(0) = "错误信息"
    ReInfo(1) = "<b>验证码有误,请返回重新输入</b><br/><a href=""javascript:history.go(-1);"">单击返回</a>"
    ReInfo(2) = "ErrorIcon"
    register = ReInfo
    Exit Function
End If

OK,问题解决。

后记:网上搜索了下,中招的不只我的博客:

图片

图片

评论(1)

洋葱头 2015-07-18 12:46
我的修改过了怎么还被恶意注册呢
[reply=dnawo,2015-08-08 09:26 AM]前段时间没网络,这两天记录了下注册信息,每天都有恶意注册,仅有少部分成功:username=EstherMattingly586&password=Ae56GW&Confirmpassword=Ae56GW&Gender=2
&email=oscarhunt2523%400815.ru&homepage=&validate=9111&action=save
&submit2=%E6%B3%A8%E5%86%8C%E6%96%B0%E7%94%A8%E6%88%B7[/reply]
计算题
评论需审核通过后显示
← 上一篇 LINQ to Entities尝试将NULL转为System.… 下一篇 → RichTextBox.Find遍历搜索字符串中的坑