微信抢红包神器?通用型微信抢红包神器-pg电玩城
大家好,今天来为大家分享微信抢红包神器的一些知识点,和通用型微信抢红包神器的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
本篇文章记录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] \'=\',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,本文到此结束,希望对大家有所帮助。