拼接二维码得到网址:https://2024challenge.52pojie.cn/
初级:
flag1{52pj2024} flag2{xHOpRP} flag3{GRsgk2} flag4{YvJZNS} flagA{09dbcd04}
flag1
在视频出现二维码前边可逐帧查看
flag2
登陆时抓包跳转包中
flag3
视频的最前部可播放器设置循环查看(静态看不出来)
flag4
背景图中
flagA
登陆时输入UID,burp 抓包
Forward 到 get /auth/uid
将flagA 的内容覆盖uid的 send解密获取解密后的flagA
中级:
flag5{P3prqF} flag6{20240217} flag7{Djl9NQ} flag8{OaOjIK} flagB{aeae5c68}
flag5
去掉无用字符得到
flag6
直接点击计算或者查询MD5的值
flag7
视频中github的历史提交记录中
https://github.com/ganlvtech/52pojie-2024-challenge
flag7{Djl9NQ}
flag8
flag8{OaOjIK}
flagB
64为整数中18446744073709551615为0
erichyx 发表于 2024-2-26 17:00
flagB购买18464037713个也不是消耗0的,一样会提示钱不够。我看其他人说会扣除28个金币,不知道怎么来的 ...
flagB 999063388*18464037713=18446744073709551616
这个搞错了18446744073709551616不能被999063388整除
18446744073709551616/999063388
18464037713.0
18446744073709551616//999063388
18464037712
18464037713*999063388
18446744073709551644
18446744073709551644-18446744073709551616
28
18446744073709551616不能被999063388整除,
18464037713*999063388=18446744073709551644
64位整数
18446744073709551644&0xffffffff = 28
所以会扣除28个金币
同理flag8
18446744073709551616/10000
1844674407370955.2
18446744073709560000&0xffffffff=8384
当购买1844674407370956个的时候需要8384个金币
flagB{439d07a8}(动态改变得,获取后必须在时间段内提交)
高级:
flag9{KHTALK} flag10{6BxMkW} flag11{HPQfVF} flag12{HOXI} flagC{412ce6c8}
flag9
为了好查看把'_','\','/' 分别替换为 ' ','*','#'
使用下面代码爆破
flag9 = ' *##### *###### *######### *### *### *### *### *############### *######### *### *### *### *###*** #****### *###*******### *##### #*### *###** #*### #*### #*******###***** *############# #*### #*### *###** *##### *### #*### *######## *### #**### *###*** #*### *###** #*### #*### #*### *###*********### #*### #*### *###** #****### *######### #*### *######### *###****### #**### *##### #**### #*######**### #*############### #*### #*### #*### #*### #*######**### *### #****###** #*### #********### #**######### #***########*### *###### #*###** #**### #*###*********### #*### #*############### #*### #*###** #**### #**###### #*### #*### *########## #*******### #********#*### #*****### #*### #**### #*### #*### #*### #*###*********### #*### #*### #**### *###*** #*### #*### *###*****### *## ### *## *### *### #*### #**### #*### #*### #*### #*### #*### #*### #*### #**### #**### r #*### *######### #**########*## #**######## #**###########* #***##### #*### #**### #*### #*### #*### #*### #*### #*############### #*### #**### *##### #*** #********* #********#** #******** #*********** #***** #*** #*** #*** #*** #*** #*** #*** #*************** #*** #*** #***** '
alen = len(flag9)
#flag9 =flag9[::-1]
n=30
with open('2aa1-2.txt','w+') as f:
for n in range(200,300):
for i in range(0,alen,n):
#print(i)
#print(flag9[i:i+n])
f.write(flag9[i:i+n]+'\n')
f.write('\n\n\n')
flag10
stegsolve查看
flag11
根据提示 --var1 --var2在0-100之间,总共有100*100 ,10000中可能
写JS脚本爆破
var x=0;
var y=0;
window.onclick=function(){if(y>100){x=1+x;y=0;}y=y+1;console.log(x,y); document.documentElement.style.setProperty("--var1",x);
document.documentElement.style.setProperty("--var2",y);}
setInterval(function() {
document.head.click();},100);
//x=71,y=20
flag12
爆破脚本, 4294967296在i32中位0,1依次4294967296,直到找到能被1103515245整除的数
也就是乘以1103515245为1的数。
a = 1
b = 4294967296
c = 1103515245
while True:
a = a+b
#print(a)
if not a %c:
print(a /c)
break
#4005161829
flag12{HOXI}
flagC
可针对classes爆破。
上传图片抓包,修改classes
逆向初级
初二
"fl@g{H@ppy_N3w_e@r!2o24!Fighting!!!}"
提示CasearCipher
ioCj~KCss|bQ6zbhCu$5r57$Iljkwlqj$$$
eflag = 'ioCj~KCss|bQ6zbhCu$5r57$Iljkwlqj$$$'
for i in range(27):
flag = ''
for a in eflag:
na = ord(a)-i
if na>=33:
flag += chr(na)
else:
flag += chr(na%126+33)
print(flag+'\n')
动态调试
初三
flag{happy_new_year_2024}
游戏通关视频最后会出现flag
也可直接查看,在ys.mp4文件最后
初四
flag 为
FlagActivity.o = new byte[27]{'V',0xee,'b','g','K',0xb7,'3',0x98,'h','^','I','Q','}','v','p','d',0xe3,'?',0xdf,0x92,'l','s','3',';','7','4','M'};
与apk的signatures亦或
signatures在apk MET-INF目录下的CERT.RSA中
Signature = [0x30, 0x82, 0x03, 0x00, 0x30, 0x82, 0x01, 0xE8, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x46, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x07, 0x6B, 0x62, 0x74, 0x78, 0x77, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07]
#偏移11e-15d
enflag = [86, 238, 98, 103, 75, 183, 51, 152, 104, 94, 73, 81, 125, 118, 112, 100, 227, 63, 223, 146, 108, 115, 51, 59, 55, 52, 77]
n = len(Signature)
n2 = len(enflag)
flag = ''
for i in range(n2):
aa = enflag[i] ^ Signature[i%n2]
#print(aa)
flag += chr(aa)