天山固网杯2025-职工组-web2-不一样的反序列化

题目名称:不一样的反序列化
题目内容:nodejs来喽
【Flag完整格式一般为:DASCTF{******},只需要提交{}内的内容。若Flag为其它格式,则会在题目描述中单独说明。】
题目分值:125.0
题目难度:容易
相关附件:不一样的反序列化的附件.zip
  1. 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');
}
  1. user.js
module.exports = {
    items: [
      {username: 'ILIS'}
    ]
  };

不会做。 有师傅会吗?浇浇我: QQ群:936250507。欢迎交流。

posted @ 2025-08-16 19:29  potjoe  阅读(133)  评论(0)    收藏  举报