写在大二上结束
又是很长时间没有更新博客了,前段时间各种事情比较多,没有学习什么东西,也就没办法输出成文章,寒假期间也有场 HCTF-game 再办,所以一直没法空下来,这个惯例的期末总结也是拖到了寒假快结束才开始写。回想一下上个学期,说来惭愧,感觉也没学什么东西。
…BYTECTF2021-byteview
漏洞分析
比赛的时候分析了很久这道题,结果也没做出来,现在想想主要 C++ 逆向不熟悉。
在 new content 时,如果之前已经 new 过了,就会进 case1。
case 1u: // new content
v17 = *(_QWORD *)v5;
if ( *(_QWORD *)v5 )
{
v21 = *(_QWORD *)v5;
v7[6].m128i_i64[0] = (unsigned __int64)menu ^ v17 & 0xFFFFFFFF0000LL;
v7[6].m128i_i32[2] = *(_QWORD *)(v17 + 32);
v18 = (struct uniq_ptr_task_req *)operator new(0x18uLL);
v18->choice = 1; // 另外一种 add 的情况
ref = v18;
*(__m128i *)&v18->old_content = _mm_unpacklo_epi64((__m128i)v21, (__m128i)(unsigned __int64)v7);// old content
}
这里面有个 v18->old_content,引用了上一个 content。
…
CVE-2021-21220
这是一个在今年的 pwn2own 的比赛上披露的漏洞,可以通过 v8 引擎实现任意代码执行,前天看到腾讯玄武实验室推送了 two-birds-with-one-stone-an-introduction-to-v8-and-jit-exploitation 这篇文章,介绍了这个漏洞的成因。漏洞本身是 jit 引擎在选择机器指令时,对 x86 平台下有符号拓展和无符号拓展指令的选择有误造成的,总体来说比较好理解,感觉比较适合作为 v8 jit 利用入门。参考这篇文章和谷歌归档的 exp,我也完成了利用。这里记录一下。本人也只是刚刚开始摸索浏览器相关的利用,肯定有不对的地方,欢迎指出。
…