2017-04-01 59 views
-1

我正在解決一個具有挑戰性的ctf問題,其中標誌位於nodejs服務器的process.env中。我可以訪問服務器的源代碼(bcs他們由express.static公開)。那麼無論如何要訪問客戶端nodejs的process.env?在客戶端訪問NodeJS process.env

+0

除非應用程序以某種方式暴露它(例如在某些API調用的響應中),或者您可以通過其他漏洞攻擊進入服務器。 – Paul

+1

聽起來像您只能訪問正在提供的客戶端源代碼,而不是服務器的實際源代碼? – bitstrider

+0

我可以訪問服務器的所有源代碼。我甚至重建了我的本地服務器。但他們在process.env中存儲標誌,所以我不能重構此變量。 –

回答

1

有一個誤解。 express.static,不會給你訪問服務器的Javascript代碼。相反,它允許您在服務器和客戶端使用選定的代碼。

這使您可以共享雙方的代碼,但它永遠不會允許您在服務器上下文中執行客戶端上的代碼。

這意味着,您將無法在客戶端執行服務器特定的代碼,如process.env

你有兩種基本的選擇,以獲得在客戶端訪問該標誌:

  • 你寫的標誌進入網頁的標記
  • 你做一個Ajax請求,響應服務器與此信息。
+0

是的,我知道express.static只是將公共數據從服務器共享到客戶端。所以我想知道服務器nodejs在哪裏分配process.env ['flag']?在源代碼中,有一行「if(win)console.log(process.env.flag)」 –

+0

您錯過了非常基本的東西:瀏覽器與節點不同。在瀏覽器中,您有一個窗口,一個文檔和一個導航器對象,但它們不存在於節點中。在節點中,你有一個進程和一個http對象,但你沒有在瀏覽器中。 –