吾爱破解 2024 春节解题领红包--Web 题解
本帖最后由 YuYu798 于 2024-2-25 15:41 编辑写在前面
本人没有任何逆向之类的经验,所以只能试试web题了,没想到也挺难的,感觉自己挺笨😂
活动链接:https://www.52pojie.cn/thread-1889163-1-1.html
活动视频:https://www.bilibili.com/video/BV1ap421R7VS/
活动规则如下:
题目共包含 12 个静态 flag: flag1~flag12,另外还需要寻找到 3 个动态 flag: flagA~flagC。
本题总共有 3 个难度,每个难度提交 4 个静态 flag 和 1 个动态 flag 就算通过(如果答对人数较少,我们会在未来二天逐步降低难度,依次减少静态 flag提交的数量,奖励也会依次减少)。
初级难度为 flag1~flag4 与 flagA(当前需要提交所有5个答案,奖励对应降低,明天可以重新查看本题要求)
提交时,请将 flag 使用空格分隔,提交到对应任务中。
不要被吓到,当做猜灯谜就好了~
flag1
这个其实我也被卡了半天,最后发现是在视频里面,从视频3s开始,出现一圈向外扩散的原点波纹,flag1就藏在里面,通过浏览器的Global Speed插件将视频调整为0.25倍速,通过观察可得得出flag1{52pj2024}
flag2
这个藏得还不算太深,可能也是我运气好,在视频4s开始一次出现了四块二维码,很明显,拼接到一起的完整二维码就是重要信息
扫描二维码得到活动主网址:https://2024challenge.52pojie.cn/
输入自己的uid点击登录,这里需要F12打开开发者工具,可以发现在https://2024challenge.52pojie.cn/的响应标头中出现了flag2{xHOpRP}
flag3
flag3藏在视频开头的雪花中,通过Global Speed插件调整视频倍速为1.25-1.5倍,得到flag3{GRsgk2}
flag4
右键查看https://2024challenge.52pojie.cn/的页面源代码,发现引用了background: url("flag4_flag10.png") white center center no-repeat;
得到flag4的图片:
flag5
flag5也在右键网页源代码中
由于css的限制,没有直接显示出来,直接删掉css即可显示
或者复制下来,写段python代码过滤一下多余的符号
string = "f.______________________________________________________________________________________________________________________________________________________________________________________________________________.............l..______________________________________________________________________________________________________________________________________________________________________________________________________________............a..________/\\\\\\__/\\\\\\_____________________________________/\\\\\\\\\\__________________/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\\\\\_____/\\\\\\\\\_____/\\\______________/\\\________/\\\_____________...........g...______/\\\///__\\////\\\___________________________________/\\\///////\\\________/\\\\\_\\/\\\_____/\\\//__\\/\\\_______\\/\\\_\\///////\\\/////____/\\\\\\\\\\\\\\__\\/\\\_____________\\/\\\_____/\\\//___/\\\\\\_____..........5...._____/\\\_________\\/\\\_____________________/\\\\\\\\____/\\\______\\//\\\_____/\\\///__\\/\\\__/\\\//_____\\/\\\_______\\/\\\_______\\/\\\________/\\\/////////\\\_\\/\\\_____________\\/\\\__/\\\//______\\////\\\____.........{.....__/\\\\\\\\\\______\\/\\\_____/\\\\\\\\\\_____/\\\////\\\__\\//\\\_____/\\\\\\____\\//\\\____\\/\\\\\\//\\\\\\_\\/\\\\\\\\\\\\\\\\\\_______\\/\\\_______\\/\\\_______\\/\\\_\\/\\\_____________\\/\\\\\\//\\\\\\________/\\\_____........P......_\\////\\\//_______\\/\\\____\\////////\\\___\\//\\\\\\\\\\___\\///\\\\\\\\/\\\__/\\\\\\_____\\/\\\//_\\//\\\____\\/\\\/////////\\\_______\\/\\\_______\\/\\\\\\\\\\\\\\\\\\_\\/\\\_____________\\/\\\//_\\//\\\______\\//\\\\\\_.......3.......____\\/\\\_________\\/\\\______/\\\\\\\\\\___\\///////\\\____\\////////\\/\\\_\\/////\\\____\\/\\\____\\//\\\___\\/\\\_______\\/\\\_______\\/\\\_______\\/\\\/////////\\\_\\/\\\_____________\\/\\\____\\//\\\______/\\\///__......p........____\\/\\\_________\\/\\\_____/\\\/////\\\___/\\_____\\\\___/\\________/\\\______/\\\_____\\/\\\____\\//\\\__\\/\\\_______\\/\\\_______\\/\\\_______\\/\\\_______\\/\\\_\\/\\\_____________\\/\\\____\\//\\\______\\//\\\____.....r.........____\\/\\\_______/\\\\\\\\\\_\\//\\\\\\\\/\\_\\//\\\\\\\\___\\//\\\\\\\\\\\\\\/______\\///\\\\\\_\\/\\\______\\//\\\_\\/\\\_______\\/\\\_______\\/\\\_______\\/\\\_______\\/\\\_\\/\\\\\\\\\\\\\\\\\\_\\/\\\______\\//\\\__/\\\\\\_____....q..........____\\///_______\\/////////___\\////////\\//___\\////////_____\\///////////__________\\/////__\\///________\\///__\\///________\\///________\\///________\\///__\\///////////////__\\///________\\///__\\/////______...F..........._______________________________________________________________________________________________________________________________________________________________________________________________________________..}............_______________________________________________________________________________________________________________________________________________________________________________________________________________." result = string.replace('.', '').replace('_', '').replace('/', '').replace('\\', '') print(result)
得到flag5{P3prqF}
flag6
从主网址即可来到flag6的网址,直接算肯定直接卡住,右键查看源代码,发现就是计算哪个数字的md5为1c450bbafad15ad87c32831fa1a616fc
随便找个md5加解密网站即可得出flag6{20240217}
<meta charset="UTF-8"> <button>计算 flag6</button> <div id="result"></div> <script src="md5.min.js"></script> <script> document.querySelector('button').addEventListener('click', () => { const t0 = Date.now(); for (let i = 0; i < 1e8; i++) { if ((i & 0x1ffff) === 0x1ffff) { const progress = i / 1e8; const t = Date.now() - t0; console.log(`${(progress * 100).toFixed(2)}% ${Math.floor(t / 1000)}s ETA:${Math.floor(t / progress / 1000)}s`); } if (MD5(String(i)) === '1c450bbafad15ad87c32831fa1a616fc') { document.querySelector('#result').textContent = `flag6{${i}}`; break; } } }); </script>
flag7
这个在视频中出现地址,即给出的Github地址https://github.com/ganlvtech/52pojie-2024-challenge
打开网址,在README.MD中发现flag7{Djl9NQ}
flag8
这个我是老老实实玩2048小游戏换的flag8{OaOjIK}
flag9
这个和flag5在一起的,那一堆符号中除了flag5等几个数字字母外,剩下的全是 _ / \我看着那个界面貌似是能组成一些字,所以就删掉了flag5那些字,然后调整一下浏览器的宽度,结果出来了flag9{KHTALK},藏得挺深的!
flag10
这个和flag4是一起的,flag4是在明面上,那flag10就是隐藏了?我先用winhex看,没有结果,又找了几个在线图片隐写解密的网站,还是白扯,最后在网上看到了stegsolve 这个工具好像是可以处理图片隐写,所以下载了一个,你别说,还真好使,下面那俩箭头点几下就出答案了
flag11
进入flag11的网址,发现是一堆乱糟糟的经过打乱拆分的图片,怀疑是拼图得到答案
看到注释直接确定拼图,将代码和原图都下载到本地,用python两个嵌套循环枚举所有可能
f = open("flag_0_0.html",encoding='utf-8') data = f.read() for i in range(1,101): for j in range(1,101): data_ = data.replace("--var1: 0; /*","--var1: "+str(i)+"; /*") data_ = data_.replace("--var2: 0; /*","--var2: "+str(j)+"; /*") fi = open("flag_"+str(i)+"_"+str(j)+".html",'w',encoding='utf-8') fi.write(data_) fi.close()
得到71 20的时候完美契合,得到flag11{HPQfVF}
flag12
进网址一看,先抓包,发现js调用一个wasm文件,看不太懂,让ai分析一下
让他直接返回1213159497这个值,然后js解密
function get_flag12(num) { let str = ''; while (num > 0) { // 获取最低的8位 let byte = num & 0xff; // 将字节转换为字符 let char = String.fromCharCode(byte); // 将字符添加到字符串的前面 str = char + str; // 移除最低的8位 num >>= 8; } // 返回格式化的字符串 return `flag12{${str}}`; } // 使用给定的数值 let result = get_flag12(1213159497); console.log(result);
得到flag12{HOXI}
flagA
这个我可太懵逼了,加密的flagA不难找,就在登录完设置的cookie里面,试了n种加密算法,全都对不上,后来细看了一下
/auth/uid 这个地址,怎么除了cookie什么参数也没提交,就能返回我的uid呢,然后突然想到cookie里面有加密的uid和加密的flagA啊,索性直接把uid的值替换成了flagA的值,用工具提交一下,flagA出来了
flagB
先玩几把2048小游戏,凑了一万来分,把flag8换了,但是flagB那么多分,肯定不是靠玩游戏获得的啊,接着我把除了flagB的道具全买了一遍,发现V50提示关键词“溢出”,溢出是指什么呢?数值溢出?2048游戏数据溢出?这个我可绕了个大弯,因为误入歧途甚至把2048游戏玩的明明白白的了...
我甚至以为超过2048再用金币翻倍就是溢出的意思,但是经过实验......并不是(吐血)
转头研究数值溢出,注意:题目是半拦,只拦截为负的数值,所以构造一个正的即可
flagC
这个应该是碰大运了
根据他给出的原始图片,确定需要的东西是小汽车,轮船,大卡车和自行车。摆出对应的顺序和位置即可。
截图四个东西,然后PS新建一个大一点的画布,开始摆位置测试即可
总结
玩得很开心,虽然寻找flag的时候真的要气死,明明就差一点,为什么找不到?不过当找到以后,还是非常满足的
另外,也认识到自己确实是个菜鸡,各位大佬只用了一个下午就全部拿下,我tm捣鼓了将近三天(o(╥﹏╥)o)被自己蠢到了
哈哈,被你逗笑了,希望活动可以对你有所帮助,期待你的成长! 新手看得一脸懵逼 polaris112 发表于 2024-3-3 22:47
新手看得一脸懵逼
我也是新手,共同进步!{:301_988:} 没有看懂,留痕下次再看
页:
[1]