XSS刷题之旅

0x01 一些资源或文章:

XSS小结
XSS总结
那些年我们没能bypass的xss filter
XSS Filter Evasion Cheat Sheet 中文版
XSS攻击手段&在CTF中的运用


0x02 常用Payload(慢慢积累…)




aa
aa
aa

需要用编码绕过时:
Base64:M

urlencode:M 

HTML实体编码 :M
aa
bb
cc








标签中可以直接执行实体字符。

Cookie盗取:

nc监听端口1234

Tips:

- 反引号代替圆括号
- 换行绕过正则
- ,也可以用--!>闭合
- //可以用换行来绕过
- 都可以在html的script标签里单独使用进行单行注释
- ſ 符号转换为大写后正好为大写字母 S
- 可以用 %0a 代替空格进行绕过

0x03 XSS编码

JS编码

JS提供了四种字符编码的策略,

  • 三个八进制数字,如果数字不够,在前面补零,如a的编码为\141
  • 两个十六进制数字,如果数字不够,在前面补零,如a的编码为\x61
  • 四个十六进制数字,如果数字不够,在前面补零,如a的编码为\u0061
  • 对于一些控制字符,使用特殊的C类型的转义风格,如\n\r
HTML实体编码

命名实体
&开头,以分号结尾的,如<的编码为&1t;

字符编码
十进制,十六进制的ASCII码或者Unicode字符编码。样式为&#数值;

<的编码为

<(10进制)

<(16进制)

URL编码

这里为url全编码,也就是两次url编码

如alert的url全编码为%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34

String.fromCharCode编码

如alert的编码为String.fromCharCode(97,108,101,114,116)


0x04 刷题

haozi-xss-demo

项目:https://github.com/haozi/xss-demo
地址:https://xss.haozi.me
包含alert(1)的js文件地址:https://xss.haozi.me/j.js
过关方式:构造input code,成功执行alert(1)

0x00

server code:

function render (input) {
  return '
' + input + '
'
}

直接构造js语句即可。

payload:

<script>alert(1)script>

html:

<div><script>alert(1)script>div>

0x01

server code:

function render (input) {
  return ''
}

这一关插入的地方在html标签里面,所以要先闭合