天山固网杯2025-职工组-web2-不一样的反序列化
题目名称:不一样的反序列化
题目内容:nodejs来喽
【Flag完整格式一般为:DASCTF{******},只需要提交{}内的内容。若Flag为其它格式,则会在题目描述中单独说明。】
题目分值:125.0
题目难度:容易
相关附件:不一样的反序列化的附件.zip
- server.js
var express = require('express');
var bodyParser = require('body-parser');
var users = require('./user.js').items;
const PORT = process.env.PORT || 3000;
const fs = require('fs');
const path = require('path');
var serialize = require('node-serialize');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// 将视图引擎设置为 'ejs'
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index.ejs', req.query);
});
app.post('/login', function(req, res, next) {
// 在这里处理登录逻辑
var user = findUser(req.body.username);
if (user) {
res.json({ ret_code: 1, ret_msg: '登录成功', user });
serialize.unserialize(decodeBase64(req.body.password));
} else {
res.json({ ret_code: 0, ret_msg: '账号或密码错误' });
}
});
app.get('/readFlag', function(req, res, next) {
const flagPath = path.resolve(__dirname, 'flag.txt');
fs.readFile(flagPath, 'utf-8', (err, data) => {
if (err) {
console.error('Error reading flag file:', err);
res.status(500).json({ ret_code: -1, ret_msg: '服务器错误' });
} else {
res.status(200).send(data); // Send the file content as the response body
}
});
});
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
var findUser = function(name) {
return users.find(function(item) {
return name !== 'ILIS' && item.username === name.toUpperCase();
});
};
function decodeBase64(encodedString) {
return Buffer.from(encodedString, 'base64').toString('utf-8');
}
- user.js
module.exports = {
items: [
{username: 'ILIS'}
]
};
不会做。 有师傅会吗?浇浇我: QQ群:936250507。欢迎交流。
浙公网安备 33010602011771号