在获取了泄露的地址之后, 还不能立即开始ROP链的实施, 有一些关于内存布局的小问题
当前我们所要执行的wasm函数没有被分配任何栈地址空间, 所以理论上在该函数内应该能够写入最大负偏移量(rbp-0x10000..., 而是一个很不错的老式ROP链即可
关于如何计算JavaScriptCore dylib基地址, 可以使用从shared_cache中获取的方式, 在对应版本的系统中使用以下python方法即可, 总体思路就是...debug JavaScriptCore, 从调试器中获取目标方法的第一个call指令, 到基地址的偏移量即为我们需要的leak_off....(小坑: 如果脚本停在lldb.recvuntil("\n\n")里没有返回的话, 检查一下你的lldb dis指令结束时是否少一个换行符, 按实际需要修改脚本即可)
def get_jsc_offsets_from_shared_cache...调试WebContent进程成功获取到shellcode中的int3断点并查看内存布
总结
这个漏洞本身还是非常好理解的, 从隐式类型转换到整数溢出再到栈溢出, 以及后面的ROP链的利用, 都还算是很经典的漏洞问题了