我绕过验证的模拟登陆的崎岖倒流

由于好奇一直想试试模拟登陆,然后就把目标定在某所大学的登录网站上

大至样式就是这样的

通过界面我们大致可以了解到请求可能会后username,password,验证码,记住用户

接着使用burp进行抓包得:

可以通过post请求知道dlm就是uesrname,hexMd5是加密后的password(加密手段应该是MD5),cookie就是记住用户

...等等,怎么没有验证码,真奇怪,算了待会再看验证码把

通过浏览器中查看源码,得:

我们看出来dlmm是原始密码,而hexMd5是通过md5加密后的值

而后我的好奇心又回到了验证码上,源码显示:

哈哈哈,验证码居然在明面上,那简直太简单了,抓一下试试,代码如下:

1 import re
2 def reg_html(html):
3     parttern = re.compile(r‘<input type="hid.*‘)
4     yzm = parttern.findall(html)
5     return yzm

但结果也大失所望,抓到的value值为空,可能是我对前端知识不太了解,愿意坚持看下去

发现这个验证码调用了一个js的generateMixed函数

找到这个函数 得:

大致看明白了,别的还好说,关键这个random就让人没法弄啊。苦恼想放弃.....回家!

在路上,我问了一个师哥,我说我的post请求里没有验证码这是什么情况,他告诉我两种情况:

1 验证码在只是在前端作为一个check,可以绕过

2 验证码可能和用户密码等参数分着发过去了

我不解,回去用fiddler又做了一次抓包,post的数据中确实没有验证码,所以我猜想是第二种可能

于是我写了个脚本进行验证 代码如下:

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3
 4 import re
 5 import requests
 6 from bs4 import BeautifulSoup
 7 import hashlib
 8
 9 URL = ‘http://xxxxx.xxxxxx.edu.cn/login.login.action‘                    #login_url
10 URL_p = ‘http://xxxxx.xxxxxx.edu.cn/login.toStudentJsp.action?math=4636‘ #跳转url,可以通过js找到
11 URL_p2 = ‘http://xxxxxx.xxxxxx.edu.cn/stumiddle.jsp‘                      #user_info_url
12
13 def md5Encode(string):
14     m = hashlib.md5()
15     m.update(string)
16     return m.hexdigest()
17
18 def post_html(url,url2,url3):
19     session = requests.Session()
20     headers = {‘User-Agent‘:‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1581.2 Safari/537.36‘}
21     payload = {‘dlm‘:‘xxxxxxxxxxxxxxx‘,
22                ‘hexMd5‘:‘%s‘%md5Encode(‘xxxxxxxxxxxxxx‘),
23                ‘cookie‘:‘0‘
24                }
25     session.post(url,data=payload,headers=headers)
26     session.get(url2,headers=headers)
27     text = session.get(url3,headers=headers).text
28     return text
29
30 def parser_html(html):
31     soup = BeautifulSoup(html,‘html.parser‘)
32     return soup.prettify()
33
34
35 if __name__ == ‘__main__‘:
36     parser_html(post_html(URL,URL_p,URL_p2))

其中URL_p可以通过fiddler抓包得到或者通过js的跳转代码也可以找到,其中math=4636,如果看到js源码,这个就是js随机生成的一个4位数,可能为了标记每次的用户信息页面不一样吧

URL_p2通过fildder可以找到

运行这个脚本,如果我们的username或者password有错误,会返回这个text

但如果正确,则会get到正确页面,下图是上面脚本运行后,fiddler抓到的

模拟登陆成功了!,完全绕过了页面的验证码环节。

那么话说回来,既然有账号密码,我用的着这么麻烦,我个人认为有两方面原因

一是为了练习一下模拟登陆

二是可以 b r u t e  f o r c e 阿,但我有个不好的消息,这所大学的登录系统,如果5次尝试失败,会将username冻住30分钟。这真是杀敌一千自损八百啊,

但如果你要真想让这个用户崩,你可以写一个30钟登录5次的模拟登陆脚本,让该用户始终上不了。

haha,不聊了,看电视剧去了

时间: 2024-11-08 20:15:20

我绕过验证的模拟登陆的崎岖倒流的相关文章

爬虫再探实战(二)———模拟登陆豆瓣(续集。。)

关于豆瓣,还是算是爬虫友好型的网站,之前模拟登陆也很容易就成功了,不过最近要在豆瓣抓点东西,发现代码已经不能用了.打印源码发现,需要验证码了. 所以,这里写个续集...较上一篇改动主要在验证码和一个随机字符串的获取,再之后加入pyload就行了.具体参照代码. import re import requests headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko)

爬虫再探实战(二)———模拟登陆豆瓣

爬虫有时候也要进入登陆页面之后进行爬取,这就避免不了模拟登陆了.自己在这里卡了好久,终于算是模拟成功一次. 当然,这次也是用requests,真是好用的很呢.上代码. #------------ #2016/6/11 #模拟登陆豆瓣成功!!! import requests url = 'https://accounts.douban.com/login' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.

selenium自动化测试工具模拟登陆爬取当当网top500畅销书单

selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制. 当当网目前还没有对这方面加以限制,所以今天就用这个练习熟悉一下selenium操作,我们可以试一下爬取一下当当网top500的畅销书单的相关信息,页面如下: 虽然这个页面不用登录就可以进来,但是我们可以随便试一下模拟登陆,直接在这个页面上面点击登录进入登录界面,然后会弹出一下窗口, 这是百分百会

python爬虫 模拟登陆校园网-初级

最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登录使用浏览器标识,需要模拟登陆 2: 需要post账号,密码,以及学校id python走起,我用的2.7版本,用notepad++写的,绑定python可以直接运行 由于是模拟网页登陆,需要导入urllib urllib2 cookielib库,前两个有与网页直接的接口,cookielib就是用来

模拟登陆百度并发帖

概述 用程序模拟提交表单登录百度. 意义 从实用意义上说,这种问题其实意义不大,并且也并不适合写成博客.百度网页在不断变化,而此博客内容却不会相应更新,无法保证内容的正确性. 从学习知识方面说,这种问题适合作为学习课题.这几天学了下python,感触良多.python确实比java灵活,语法也有许多漂亮的特性.比如多行字符串,raw字符串(无需转义的字符串),在java中都没有,好难受. 这种问题需要耐心,像破解密码一样,需要去尝试,去理解,去猜想,耗费时间和精力,性价比较低,有这功夫就不如多学

Scrapy基础(十四)————知乎模拟登陆

#-*-coding:utf-8 -*-__author__ = "ruoniao"__date__ = "2017/5/31 20:59" 之前我们通过爬取伯乐在线的文章,伯乐在线对爬取没有什么限制,这次爬取知乎,就有了爬取限制,首先就是登录限制:为破解限制,首先就是模拟登录 模拟登陆首先要明白的就是session和cookie机制: 简单的说(个人理解):  http是一种无状态的协议,为解决用户每次都需要输入密码登录的烦恼,也为了服务器能够记住每次请求的浏览器

Python实现网站模拟登陆

一.实验简介 1.1 基本介绍 本实验中我们将通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方法,使用 Firefox 抓包分析插件分析网络数据包等知识. 模拟登录可以帮助用户自动化完成很多操作,在不同场合下有不同的用处,无论是自动化一些日常的繁琐操作还是用于爬虫都是一项很实用的技能.本课程通过 Firefox 和 Python 来实现,环境要求如下: Python 库:urllib, ur

Python模拟登陆练习——imooc.com登陆

写下这篇文章的时候,是博主学习python的第三天( 也许是第四天:( ),python是博主接触的第二门解释型语言(第一门是javascript). 讲真在很久之前就想要用博客记录自己的学习历程了,然而就像写日记一样,写着写着就放弃了-.- so今天决定给自己一个好的开端~ 博主的学习方式是直奔目的,遇到问题百度各种博客,网站,百度找不到google找,就这样.这种学习方式是真的见效快,但显而易见,基础会比较薄弱. 因此学习python的基本语法,就直奔爬虫了! ---------------

Scrapy基础(十四)————Scrapy实现知乎模拟登陆

模拟登陆大体思路见此博文,本篇文章只是将登陆在scrapy中实现而已 之前介绍过通过requests的session 会话模拟登陆:必须是session,涉及到验证码和xsrf的写入cookie验证的问题:在scrapy中不需担心此问题,因为Request会保证这是一个会话,并且自动传递cookies原理想通,因为验证码识别的问题,这里先使用cookie模拟登陆 1 # -*- coding: utf-8 -*- 2 3 import scrapy 4 import json 5 import