cxxjackie
发表于 2021-8-31 20:21:18
李恒道 发表于 2021-8-31 17:32
他这个写法感觉好奇特有没有
是指我的描述奇特还是代码奇特?代码的话可能是因为我加了反劫持,所以读起来有点别扭。
李恒道
发表于 2021-9-1 15:45:16
cxxjackie 发表于 2021-8-31 20:21
是指我的描述奇特还是代码奇特?代码的话可能是因为我加了反劫持,所以读起来有点别扭。 ...
写法,反劫持还能这么玩
话说哥哥碰到过这种劫持的页面么
真这么搞也太骚了吧
cxxjackie
发表于 2021-9-1 19:35:34
李恒道 发表于 2021-9-1 15:45
写法,反劫持还能这么玩
话说哥哥碰到过这种劫持的页面么
真这么搞也太骚了吧
一般是对象上的某个方法被改了,比如把toString方法改掉,这会影响我判断类型,有些不是有意的,只是不小心重名了而已。把整个对象都改掉的也有,我就碰到过不止一个把Map给改了的网站,他自己不用Map,然后自定义了一个地图类,就把Map给弄没了。
steven026
发表于 2022-7-12 16:56:24
本帖最后由 steven026 于 2022-7-12 16:57 编辑

```
const FUZZY_SEARCH_FUNCTION_NAME = '$fuzzySearchKey';
unsafeWindow=key=>{
let Keys=new _Array()
for(let i in globalProps){
let arr=globalProps.filter(item=>item.toLowerCase().includes(key.toLowerCase()))
if(arr.length>0){
Keys.push(...arr)
}
}
let goal=new _Array()
Keys.forEach((item)=>{goal.push(allKeys.get(item))})
_console.dir(goal || [])
}
_console.log(`${FUZZY_SEARCH_FUNCTION_NAME}函数已注入!`);
```
GGNB,这个脚本在逆向的时候很好用。
另外我加了个模糊查找的功能,感觉这样更方便一点
cxxjackie
发表于 2022-7-12 20:43:06
steven026 发表于 2022-7-12 16:56

```
const FUZZY_ ...
感觉写的有点问题,globalProps是全局属性,所有属性应该在allKeys里,可以用这种方式遍历属性名:
for (const item of allKeys.keys()) {
if (item.toLowerCase().includes(key.toLowerCase()) {
Keys.push(item);
})
}
然后模糊查找可以给$searchKey加第二个参数,这样就不用额外注入一个函数。
这个脚本太久没更新了,当时写的时候代码也乱糟糟的,以后可能会重构一下。
steven026
发表于 2022-7-12 20:52:22
cxxjackie 发表于 2022-7-12 20:43
感觉写的有点问题,globalProps是全局属性,所有属性应该在allKeys里,可以用这种方式遍历属性名:
然后 ...
大致读了一遍代码果然还是不如原作者逻辑更清晰 {:4_108:}
steven026
发表于 2022-7-18 20:24:54
GG发现一个bug
测试网址https://gltyx.github.io/omsi-loops/,加载完直接运行脚本就会报错
cxxjackie
发表于 2022-7-18 22:12:05
steven026 发表于 2022-7-18 20:24
GG发现一个bug
测试网址https://gltyx.github.io/omsi-loops/,加载完直接运行脚本就会报错 ...
我看了一下,他用了很多Proxy,还把一些对象的正常属性给删掉了,导致那些原本能作用于对象上的方法各种出错,好像还会不小心进死循环。。。暂时修复了这个问题,解决方法就是避开这些特殊对象,可能不是很完美,有时间我再细究一下。
steven026
发表于 2022-7-20 22:26:16
通过枚举window的方法只能获取到挂载在window下的全局变量,
但是无法获取全局下通过const、let的全局变量,百度查下了全局下通过const、let的变量有作用域,虽然也是全局变量但是是挂载在global下的。
目前我只找到通过DevTools输入变量名自动联想到,
想问问哥哥这种const、let声明的全局变量能通过js遍历到吗?
cxxjackie
发表于 2022-7-20 23:06:13
steven026 发表于 2022-7-20 22:26
通过枚举window的方法只能获取到挂载在window下的全局变量,
但是无法获取全局下通过const、let的全局变量 ...
是的,这个问题我也考虑过,但目前没想到什么好办法,const/let的变量应该不是挂载在global上(浏览器中global即window),而是在块级上,全局const/let就相当于一个巨大的块级作用域,js似乎没有提供针对块级作用域的遍历方法。