文章目錄
- 前言
- web334
- web335
- 方法一
- 方法二
- web336
- 方法一
- 方法二
- 方法三
- web337
- web338
前言
nodejs從入門到挖墳,今天早上剛剛學了一點,成功了,比較開心,入門了新的領域
web334
下載原始碼下來在user.js里面發現了用戶名和密碼,群主比較坑哈,搞了個大寫,明明是小寫,ctfshow與密碼我忘了壓縮包懶得下
web335
方法一
一道Node.JS的RCE

之后cat fl00g.txt即可

方法二
方法太多了隨便寫一個吧
global.process.mainModule.constructor._load('child_process').exec('calc')
web336
方法一
先用上一題paylaod

嘗試繞過姿勢,也不行

那么試一下讀取下檔案呢,看看過濾了啥,通過全域變數讀取當前目錄位置

很明顯過濾了這兩個

嘗試本地繞過本地打通

把加號url編碼(瀏覽器決議特性+會成為空格好像)
出結果

方法二
首先讀取目錄下檔案,看到flag了


方法三

web337
陣列繞過,很簡單,不寫程序了
web338
考點:nodejs原型污染
推薦大家看看這篇文章,不用看多一點點就好,很簡單的,俺也是現學的相信自己繼承與原型鏈
關鍵點是這里
router.post('/', require('body-parser').json(),function(req, res, next) {
res.type('html');
var flag='flag_here';
var secert = {};
var sess = req.session;
let user = {};
utils.copy(user,req.body);
if(secert.ctfshow==='36dboy'){
res.end(flag);
}else{
return res.json({ret_code: 2, ret_msg: '登錄失敗'+JSON.stringify(user)});
}
});
主要是utils.copy(user,req.body);是利用點

此時,因為原型污染,secret物件直接繼承了Object.prototype,所以就導致了secert.ctfshow==='36dboy'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241971.html
標籤:其他
