HTML实体编码转换
html中不允许使用尖括号,因为会被误认为标签,但是实际生活中我们是有使用尖括号的需求的,所以我们用一种编码的方式来代替具体的符号。
即 &#加上ascii码加上分号;
如a --> a
html可以识别这种编码,但是js没有办法识别。故实际在注入的时候,我们可能需要使用svg标签来执行,就像这样
<svg><script>alert(1)</script></svg>
## 这里(和)分别是左右括号。
至于为什么可以用svg标签,之前没有接触过,粗略查了一下,这个好像是一个画图库里的使用工具,所以我猜测可能是因为需要用函数对标签里的东西进行绘画啥的。
顺手写了个小脚本,用于转换字符串为html实体编码。
s = input("Input str : ")
target = ''
for i in s:
tmp = "&#" + str(ord(i)) + ";"
target += tmp
print("HTML encode is: \n%s" % target)
# 运行效果
# D:\vscode\Web_Security>python3 html_encode.py
# Input str:alert(1)
# Result is
# alert(1)