我是一个完全初学者,我试图解决Portswigger学院的实验室。我现在正在学习XSS,我被困在某个地方。
实验室详细信息:该实验室演示了一个反射的DOM漏洞。当服务器端应用程序处理来自请求的数据并在响应中回显数据时,会出现反映出的DOM漏洞。然后,页面上的脚本以不安全的方式处理反射的数据,最终将其写入危险的接收器。**为了解决这个实验室问题,创建一个调用警报()函数的注入。//
因此,实验室上有一个JSON文件,它可以转义引号。有这样的回应:
{"results":[],"searchTerm":"test"}
为了减少这个空间,我做了这样的事情:
GET /search-results?search=\"alert(1)}//
对此的回应是:
"results":[],"searchTerm":"\\" alert(1)}//"}
一切都很好。我逃过了引号。我曾经想过,如果我在搜索框上输入\"alert(1)}//这个词,我可以解决这个实验室的问题,但是它不起作用。解决这个实验室问题的唯一方法是\"+alert(1)}// or \"-alert(1)}//
但是为什么我们需要这个+和-符号呢?
发布于 2022-08-24 14:20:54
这是因为您在JavaScript对象中的字符串上下文中。因此,您需要将字符串保持在正确的格式中,才能执行有效负载。通过包括+或-您确保字符串不会中断。
加法是连接字符串的正确方法。使用void函数对字符串进行连接会导致将字符串“未定义”添加到原始字符串中,并为其添加一个有效语句。
破折号或减号从字符串中减去,在JavaScript中这会导致NaN,因此也允许。
https://security.stackexchange.com/questions/264329
复制相似问题