DEF CON 30 CTF Quals Teedium Wallet复盘 发表于 2022-06-05 | 分类于 漏洞利用 | 2 条评论 题目是一道关于ARM TEE中Trusted Application的Pwnable题目,其中的TEE OS是[OP-TEE OS](https://github.com/OP-TEE/optee_os),整体架构如下 ![image.png-155.1kB][1] [1]: http://static.zybuluo.com/birdg0/9ksorwhkmxnukfl2ovfzgefx/image.png [2]: http://static.zybuluo.com/birdg0/f5lict3ps0xqh40kg39kf649/%E5%9B%BE%E7%89%87.png [3]: http://static.zybuluo.com/birdg0/giq6iu3ixxi1m1yo7jk69rx2/%E5%9B%BE%E7%89%87.png [4]: http://static.zybuluo.com/birdg0/ihkql2opv9l4xrr8fsq8ttnb/%E5%9B%BE%E7%89%87.png [5]: http://static.zybuluo.com/birdg0/ltuydkq1uarfstic84ume4da/%E5%9B%BE%E7%89%87.png [6]: http://static.zybuluo.com/birdg0/cdflczdhdo7qgl3zlkqx0sar/%E5%9B%BE%E7%89%87.png [7]: http://static.zybuluo.com/birdg0/uvf24ymw7liqf4lic3axl7qe/%E5%9B%BE%E7%89%87.png 阅读全文 »
36C3 CTF vvvv writeup 发表于 2019-12-31 | 分类于 漏洞利用 | 1 条评论 按照之前的惯例,每年最后一天写下C3CTF的writeup,今年搞定了一个题目[vvvv](https://2019.ctf.link/assets/files/vvvv-cc9085ea51e239dc.tar.xz),这是关于Qt的JS引擎的题目 ![][1] [1]: http://static.zybuluo.com/birdg0/twqhh6i0r8b0ayl84cugovzu/WX20191231-231927@2x.png [2]: http://static.zybuluo.com/birdg0/pswppue7s9d54tlm9tfmfl25/WX20191231-235412@2x.png 阅读全文 »
Plaid CTF 2019 Spectre writeup 发表于 2019-04-18 | 分类于 漏洞利用 | 暂无评论 这个题考察的是在2018年1月公布的关于CPU分支预测的Spectre漏洞,具体细节可以看[https://spectreattack.com/spectre.pdf](https://spectreattack.com/spectre.pdf) 题目给了一个[binary](https://drive.google.com/open?id=1THs2TpjxaHiwDRFhgUq5FE42RlrRyn7b),逻辑很简单 阅读全文 »
以0kill的35C3 0day CTF纪念2018 发表于 2018-12-31 | 分类于 漏洞利用 | 暂无评论 突然发现去年的今天写的也是C3CTF的writeup,同样最后都卡在了ruby的题上,只是不同的是去年搞定了4个题,今年不仅只看了一个题,而且到比赛结束都没有搞定,非常不开心。。。 今年最后一场比赛就看了ruby的sequence这一题,题目逻辑很简单,主要功能就是加载用户提供的ruby字节码然后disasm,并disable了glibc中的`tcache` ```ruby strs = {} loop do print '> ' STDOUT.flush cmd, *args = gets.split begin case cmd when 'disas' stridx = args[0].to_i puts RubyVM::InstructionSequence::load_from_binary(strs[stridx]).disasm when 'gc' GC.start when 'write' stridx, i, c = args.map(&:to_i) (strs[stridx] ||= "\0"*(i + 1))[i] = c.chr when 'delete' stridx = args[0].to_i strs.delete stridx else puts "Unknown command" end STDOUT.flush rescue => e puts "Error: #{e}" end end ``` 阅读全文 »
34C3 CTF 部分pwn writeup 发表于 2017-12-31 | 分类于 漏洞利用 | 9 条评论 # 1. SimpleGC 漏洞点在删除user减少group的引用计数时,程序的实现是遍历整个group数组找到一样的进行减1,如果先添加一个不存在的group的user,然后把该user的group修改成已存在的,在删除该user时就会把之前已存在的group free掉导致UAF 阅读全文 »
2017 HCTF Finals game writeup 发表于 2017-12-20 | 分类于 漏洞利用 | 1 条评论 首先是信息泄露,在复制数据时当剩下的数据长度比需要的小时就不会进行复制 ```c __int64 __fastcall copy_by_size(handle_message *handle_message, char *buf, unsigned int size) { __int64 result; // rax@1 char *v4; // rdi@3 int v5; // eax@3 handle_message *v6; // [sp+Ch] [bp-18h]@1 unsigned int i; // [sp+20h] [bp-4h]@2 v6 = handle_message; result = handle_message->size - size; if ( handle_message->offset <= (unsigned int)result ) { for ( i = 0; ; ++i ) { result = i; if ( i >= size ) break; v4 = v6->content; v5 = v6->offset; v6->offset = v5 + 1; buf[i] = v4[v5]; } } return result; } ``` 当反序列化类型为666子类型为1时,有一个整数溢出的漏洞,通过构造合适的大小,在`malloc`后实际不进行复制,由于未初始化就可以泄露堆上的信息,例如堆地址等 阅读全文 »