-
-
[原创]【2019看雪CTF】Q3赛季 第十二题:精忠报国 WP
-
发表于:
2019-9-25 00:54
5127
-
[原创]【2019看雪CTF】Q3赛季 第十二题:精忠报国 WP
完全0基础做题,乱做的。
看diff:
删除了FastElementsAccessor中关于fill实现部分的check代码。
然后就开始找v8的相关资料看,看了两天,有个大致的概念。
通常大概思路是OOB->AAR/AAW->get shell或者其它。
但是怎么触发漏洞呢,试了好久也没成功,没办法真正0基础啊,不会写js,只能copy代码,能触发才怪。我太难了。
放了两天,因为队友发我的一个链接,我又拿起来了,然后稀里糊涂就做出来了。
poc
其中谈到了如下代码:
但是他针对的fill部分代码与本题并不一样,但同样适用。我想应该还有其它更简单的触发方式吧。于是直接copy了完整poc,改吧改吧,竟然就成功了。原POC bug好像有点多。
上面代码可实现一次OOB的写,稍加修改就可以修改array的length,造成真正意思上的OOB。
提前在array后布置一个空的数组ptr_leak_object和一个BigUint64Array数组arbirary_access_array,ptr_leak_object用于leak对象地址,arbirary_access_array用于AAR/AAW。
修改array的length为一个比较大的值(不用太大,使arbirary_access_array,ptr_leak_object在其Elements范围内就行)。将对象引用设置ptr_leak_object的元素,则可通过array读出地址实现Leak;通过array更改ptr_leak_object的elements地址,则可实现任意地址的8字节的读可写。最后使用wasm的方式,得到可执行的内存区域,替换代码为shellcode实现get shell。
代码如下:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-9-25 20:23
被poyoten编辑
,原因: 不小心把链接弄成了图片链格式