如何通过html中的form标签发送换行符“\n”

Posted

技术标签:

【中文标题】如何通过html中的form标签发送换行符“\\n”【英文标题】:How to send a new line character "\n" through form tag in html如何通过html中的form标签发送换行符“\n” 【发布时间】:2021-11-26 13:46:43 【问题描述】:

我想通过 POST 方法为 XSS 编写 POC。在玩了很多html表单标签之后,我终于能够构造一个除了单个字符“\n”之外的有效载荷。 XSS 需要该字符才能使其工作。有效载荷看起来像这样

<input hidden=true type="search" name="
N<html><body><script>alert(document.domain)</script><h1>" value="</h1></body></html>">

但是,在 HTTP POST 请求中,提交后的换行符 
 会转换为 \n\r 而不是 \n。有没有办法解决这个问题??

【问题讨论】:

为什么需要换行符?不能只注入">吗? 如果它不接受初始的 \n 字符,它会完全中断,而不添加 \n 它只会给出 json 有效负载的错误,而不是反映有效负载。我认为这是某种与 protobuf 相关的东西,尽管后端不检查 content-type 标头。 
后面的N表示payload的十六进制长度。 原来'\n'只将光标移动到下一行而不将光标移回第0列。'\r'用于将光标返回到第0列。所以使用"\n\r"或@ 987654334@ 比只使用'\n' 更正确,尤其是在 HTTP 和类似协议中。没有'\r',你可爱的电传打印机就无法工作。你知道,通过电传打印机打印出 HTTP 页面很有趣 ;-) 如果需要,PS 操作系统会自动将 '\n' 转换为 "\n\r" 也会自动将它们从 "\n\r" 转换回 '\n'"\n\r" 用于电传打字机,而'\n' 用于显示器。 【参考方案1】:

解决方案很奇怪。只需在
 之前放置一个空格即可解决问题。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于如何通过html中的form标签发送换行符“\n”的主要内容,如果未能解决你的问题,请参考以下文章

HTML 和 form 表单常用标签

form标签

C#如何在form1中显示Form2中的变量?

点(graphviz)语言中节点标签中的换行符

如何替换字符串中的 \n 换行符,以便 <p> 标签可以显示换行符

element中form表单验证左边的字体换行了