tfsn20 发表于 2022-7-17 10:46:45

求助道哥关于根据函数名进行劫持

* 需要对eval进行劫持;
* 用户在我劫持前注入代码`let myEval=eval`;
* 因`function eval(js){console.log(js)}`对劫持前注入的myEval不生效, 所以想到原型什么的(我也不太懂);
* 能否对所有函数劫持, 也就是对Function操作, 函数名可以用arguments.callee.name获取, 当名词匹配到eval时, 就进行劫持, 这样一来用户的myEval也会被劫持;
* 可能描述的不太对, 或者哥哥有什么好的方法吗

steven026 发表于 2022-7-17 10:46:46

你可以试试枚举window,不过这样局限性好像有点大
for(let item in window){
    if(item.includes("eval")){
      window=(js)=>{console.log(js)}
    }
}

李恒道 发表于 2022-7-17 17:22:54

如果对方先于你拿到eval引用基本只能放弃了
调试页面找其他合适的注入点做注入

tfsn20 发表于 2022-7-17 17:35:18

李恒道 发表于 2022-7-17 17:22
如果对方先于你拿到eval引用基本只能放弃了
调试页面找其他合适的注入点做注入 ...

好的, 多谢哥哥解答

tfsn20 发表于 2022-7-17 17:35:50

steven026 发表于 2022-7-17 10:46
你可以试试枚举window,不过这样局限性好像有点大
for(let item in window){
    if(item.includes("eval") ...

哥哥这个不行, 不过还是多谢哥哥了
页: [1]
查看完整版本: 求助道哥关于根据函数名进行劫持