[GKCTF 2021]easynode
知识点:
js 弱类型
ejs 原型链污染
解题:
源码:
const express = require('express');
const format = require('string-format');
const {
select,close } = require('./tools');
const app = new express();
var extend = require("js-extend").extend
const ejs = require('ejs');
const {
generateToken,verifyToken} = require('./encrypt');
var cookieParser = require('cookie-parser');
app.use(express.urlencoded({
extended: true }));
app.use(express.static((__dirname+'/public/')));
app.use(cookieParser());
let safeQuery = async (username,password)=>{
const waf = (str)=>{
// console.log(str);
blacklist = ['\\','\^',')','(','\"','\'']
blacklist.forEach(element => {
if (str == element){
str = "*";
}
});
return str;
}
const safeStr = (str)=>{
for(let i = 0;i < str.length;i++){
if (waf(str[i]) =="*"){
str = str.slice(0, i) + "*" + str.slice(i + 1, str.length);
}
}
return str;
}
username = safeStr(username);
password = safeStr(password);
let sql = format("select * from test where username = '{}' and password = '{}'",username.substr(0,

本文详细解析了一次通过弱类型转换和EJS模板引擎漏洞实现远程代码执行(RCE)的过程。首先,分析了应用的WAF过滤规则,利用数组弱类型特性绕过WAF,构造SQL注入,成功登录获取token。接着,通过添加特殊用户污染原型链,最终在/admin路由利用EJS渲染执行RCE。整个过程展示了Web安全中的常见攻击手段和防御绕过策略。
最低0.47元/天 解锁文章
976





