2017-04-01 124 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对象,但你没有在浏览器中。 –