1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 一次微信朋友圈投票破解的尝试

一次微信朋友圈投票破解的尝试

时间:2024-03-31 03:03:58

相关推荐

一次微信朋友圈投票破解的尝试

先上结论:

进入投票页面的时候如果看到有页面跳转、重定向、或是微信授权,那多半是投票服务后端需要验证微信用户的openid,以实现一人一次投票,这样的投票几乎没有办法破解,因为你是在以一己之力对抗腾讯庞大的技术军团 - -!。如果投票页面可以在浏览器上打开,并且不需要做登陆之类的验证操作,那基本上是可以破解的,不过这么不负责这么low的投票系统不是程序猿偷懒就是花不起钱请个好点的程序猿要不然就是这个投票不重要,人家只想要流量,醉翁之意不在酒。

这次尝试破解的投票链接:/ApiIndex/WxIndex

下载并打开抓包软件Wireshark,用数据线连上iphone和mac,侦听iphone的网络传输,具体教程参见 /p/23823231ping一下域名,得到其ip地址,在wireshark上添加过滤器,之后在手机上进行一次正常的投票,现在我们在wireshark上就能看到这次投票过程中和投票服务器产生了哪些网络交互,如下图所示仔细分析这些http请求 /Show/MemberInfo是投票候选人列表页,请求之后被302 Found重定向访问/ApiIndex/WxIndex请求/ApiIndex/WxIndex后被重定向访问https://open./connect/oauth2/authorize?appid=wx69e1809168b77828&redirect_uri=/ApiIndex/WxCodeGet&response_type=code&scope=snsapi_base&state=STATE&component_appid=wx8ae4a66bb39e8fe3#wechat_redirect微信浏览器解析到open.时进行加密验证验证通过后带上code访问/ApiIndex/WxCodeGet?code=00156pc01FY5D12556e01LCxc0156pcI&state=STATE&appid=wx69e1809168b77828投票服务端接入微信open平台验证该code验证通过后获取到用户openid,生成一次session返回sessionid,并重定向至投票页面,此时微信浏览器上显示了投票候选人列表当我们选择某个投票候选人,点击投票后,js脚本就生成一次ajax请求。/Show/TouPiaoAjax即是本次ajax请求的uri

用python模拟一下ajax请求, 当然返回的结果是请明天再来投票。

#!/usr/bin/python # coding=utf-8 import urllib import httplibdef post(host, uri, header, data): data=urllib.urlencode(data)conn=httplib.HTTPConnection(host)conn.request('POST', uri, data, header)res=conn.getresponse()print(res.status)print(res.msg)print(res.read())def main(): host = ''uri = '/Show/TouPiaoAjax'header = {'Host': '','Accept': '*/*','X-Requested-With': 'XMLHttpRequest','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-cn','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Origin': '','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69 MicroMessenger/6.5.2 NetType/WIFI Language/zh_CN','Referer': '/Show/MemberInfo?mid=71&acid=1&from=singlemessage&isappinstalled=0&from=timeline&isappinstalled=0&from=timeline&isappinstalled=0','Cookie': '_SessionId=0edddiocwbiyupku3ikwrowi'}# Cookie: _SessionId=0edddiocwbiyupku3ikwrowi\r\ndata = {'mid':'71', 'acid':'1'} post(host, uri, header, data) if __name__ == '__main__': main()

本次破解的失败在于微信浏览器请求https://open./connect/oauth2/authorize时进行了加密验证,验证通过后返回一个code,这个code是没办法模拟出来的。投票服务端拿到这个code后也会到open.进行验证得到微信用户的openid,实现一人一次投票这样就没办法作弊了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。