微信抢红包神器?通用型微信抢红包神器
大家好,今天来为大家分享微信抢红包神器的一些知识点,和通用型微信抢红包神器的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
本篇文章记录2015年初时利用微信网页版红包H5接口实现的通用型平台抢红包神器,不同于目前市面上的抢红包外挂(模拟点击、HookAPI等)方式,当然该漏洞在15年3月便已经修复。
我们在使用网页版微信时无法点击领取红包,但是通过控制台查看网络包发现红包地址在Response中:
https://wxapp.tenpay.com/app/v1.0/receive.cgi?showwxpaytitle=1&sendid=1000033901********10153974107&channelid=1&msgtype=1&ver=2&sign=aefc0f0fadb6f09993fb071bf3****************9b4d8020f07c351c4bb6489d60d65f7f9fb2622f977fa613cbe443f6c7279f03fff2aff18859674c978656ed45388e3f606eae42a0f8ef9014f1***********21e055163c935
当群组或者用户给我们发红包时可以在返回内容中可以看到红包的URL地址(手机端老版本的微信是使用H5的接口领取红包,而无法自动判断用户发来的消息是否为红包,网页版本微信解决了判断是否为红包消息的问题,并且能获取URL)。
直接在浏览器访问获取到的红包URL,提示来源错误。任何HTTP请求重放都是简单的,之后使用Mitmproxy获取手机抢红包时的Cookie,User-Agent等Header头,然后进行重放包是可以成功领取红包的。
使用JavaScript对微信网页版Hook实时监听,判断收到消息是否为红包,如果是则匹配;
使用Mitmproxy对手机端进行抓包,获取Header信息;
利用获取到的头信息填充至开始获得到的红包地址,领取红包;
编写填充头信息以方便打开红包的Python脚本;
编写实时监控浏览器中网络传输红包数据的JavaScript脚本;
考虑方便本机搭建MiniDjango项目,在获取到红包URL后自动发送请求给后端抢红包[1];
AddMsgList.forEach(function(elem,index){
varbingo=/https:\\\\/\\\\/wxapp.tenpay.com/.test(str);
$.post(\'http://localhost:1234/wechat\',{url:str})
this._s.apply(this,arguments);
fromdjango.shortcutsimportrender
fromdjango.httpimportHttpResponse
url=urllib.unquote(url).replace(\'amp;\',\'\')
returnHttpResponse(_money(url,cookie))
headers_fake={\'User-Agent\':(\"Mozilla/5.0(Linux;U;Android4.2.2;zh-cn;GalaxyNexus-4.2.2-withGoogleApps\"
\"-API17-720x12801Build/JDQ39E)AppleWebKit/534.30(KHTML,likeGecko)\"
\"Version/4.0MobileSafari/534.30MicroMessenger/5.3.0.80_r701542.440\"),
\'X-Requested-With\':\'com.tencent.mm\',
req_key_content=requests.get(url,headers=headers_fake).content
g_sendld=re.findall(\'g_sendId:\"(.*?)\",\',req_key_content)
g_sendnick=re.findall(\'g_sendNick:\"(.*?)\",\',req_key_content)
g_detailtoke=re.findall(\'g_detailToke:\"(.*?)\",\',req_key_content)
g_detailtoke=(g_detailtoke[0])
sign_key=(str(url.split(\'&\')[-1:]).split(\'=\')[1])[:-2]
receive_url=(\"https://wxapp.tenpay.com/app/v1.0/wxhb_open.cgi?msg_type=&send_id=%s&channel_id=&detailToke=%s&scene=\"
\"&us=&sign=%s&attention=0&hb_version=v2&ver=2&isappinstalled=0&clientversion=25030050&devicetype=android\"
receive_url=receive_url%(g_sendld[0],g_detailtoke[:-4]+\'%3D\',sign_key)
receive_content=requests.get(receive_url,headers=headers_fake).content
return_json_data=json.loads(receive_content)
ifreturn_json_data[\'retmsg\']==\'ok\':
money_count=return_json_data[\'amount\']*0.01
print\'[+]Success:%s$\'%money_count
print\'[-]Status:%s\'%return_json_data[\'retmsg\']
文中部分代码和图片因时间无法全面提供,修复后不再传输红包地址:
如果你要问现在还有没有新的方法,嗯是有的。
长按二维码,打赏一杯咖啡钱:
Evi1m0@KnownSec
每条回复必看,部分文章将会更新至博客:http://linux.im
感谢关注,喜欢本文就点击右上角分享一下,微信搜索:Evil-say
如果你有好的想法、创意、合作意向,可以给我留言或者邮件:evi1m0.bat@gmail.com
OK,本文到此结束,希望对大家有所帮助。