1. CTF
    1. CONFidence 2020 chromatic_aberration
      1. 经典的TypedArray溢出
      2. 惯用打法是:
        1. 非堆区TypedArray溢出改ObjArray的map造类型混淆
        2. 通过类型混淆实现AAR/W与AddrOf原语
        3. 通过AddrOf与AAR辗转操作得到wasm的mmap空间地址
        4. 篡改wasm的mmap空间内指令,执行shellcode
      3. 本次暴力操作是:
        1. 非堆区TypedArray溢出改下一个TypedArray的data ptr,从而实现AAR/W原语
        2. string越界读拿到堆区TypedArray地址,辗转AAR得到对象空间base addr
        3. wasm的instance偏移可预测,直接读instance结构体内的mmap空间地址
        4. 篡改wasm的mmap空间内指令,执行shellcode
    2. KCTF2019决赛-小虎还乡
      1. v8优化代码,删除“永远不会到达的”若干代码分支
      2. 时间不可能为负,但time的范围是(-kMaxTimeInMs, kMaxTimeInMs),代码优化时将会把range缩小为不包含负数,从而触发负数越界
      3. 精彩的参考文章
      4. 漏洞触发后采用无类型混淆的打法 (感觉可以拿来当CTF里v8 pwn的模板):
        1. 在内存中紧密排列如下结构
          1. 可越界写的JsArray
          2. 将要被越界写修改长度的JsArray
          3. 用于AAR原语的Float64Array
          4. 用于AddrOf原语的ObjectArray
          5. 用于AAW原语的ArrayBuffer
        2. 获取RWX_PAGE地址
          1. wmain_addr = AddrOf(wasm_main)
          2. sharedInfo = AAR(wmain_addr+0x18)
          3. wasmExportedFuncData = AAR(sharedInfo+0x8)
          4. wasmInstance = AAR(wasmExportedFuncData+0x10)
          5. RWX_PAGE_ADDR = AAR(wasmInstance+0x80)
        3. JsArray(with corrupted length)修改ArrayBuffer.backing_store指向RWX_PAGE,从而可以写入shellcode
  2. 沙盒逃逸
    1. 漏洞挖掘
      1. 审计flatpak与firejail的文件系统相关系统调用名单处
    2. 经典赛题
      1. 去年GoogleCTF共有五道sandbox类型赛题,其中前两道可以直接通过文件系统调用绕过,剩余三道正在做
  3. cpython拓展
    1. 漏洞挖掘
      1. 审计bjoern中(历史漏洞都是在parse http header时发生)
      2. Cpython拓展调试办法