0x00 前记
大佬们轻点喷qaq
这是一道hexagon架构的pwn题,比较冷门,但漏洞很简单就是一个栈溢出。第一次见hexagon架构的pwn题是在2024年的geekctf上,具体关于hexagon程序运行、调试、栈迁移打法复现,可以看我的这篇博客(如果你是在做题的时候现学查到的先知那篇文章,没错那也是我的)下面也会讲到,这篇文章里其实还记录了新利用的发现,但是在比赛期间被我锁上了。
大佬们轻点喷qaq
这是一道hexagon架构的pwn题,比较冷门,但漏洞很简单就是一个栈溢出。第一次见hexagon架构的pwn题是在2024年的geekctf上,具体关于hexagon程序运行、调试、栈迁移打法复现,可以看我的这篇博客(如果你是在做题的时候现学查到的先知那篇文章,没错那也是我的)下面也会讲到,这篇文章里其实还记录了新利用的发现,但是在比赛期间被我锁上了。
toolchain for hexagon这是高通官方的hexagon架构编译工具链源码。是的没错你要自己编译这个环境。当然github上面也给出了编译好的release版本,开箱即用。经历一些波折之后我觉得似乎还是开箱即用比较方便(
搭建步骤大致如下:
最近在找点新的东西学,翻着翻着找到这道题,稀罕物,所以想着学一学。hexagon架构的pwn题很少见,网上资料也很少,好在题目附件给了源码,可以对照着汇编来学习,类比一下应该不算太难学。网上关于这道题的解析也是少之又少,就算有也很不详细。
这题应该是除了签到外全场第一个一血,我抢了个三血。纯血可见字符shellcode题。main函数了塞了一些花指令(jn+jnz),没法直接反编译,部分IDA版本不受影响,我当时用8.3是需要nop掉之后,再create function才能正常反编译。
开了沙箱:
本来在前段时间学会protobuf逆向之后,想着直接又去学习llvm pass pwn,然后发现,看不懂(悲)。近段时间刚好在啃编译原理的龙书,掌握了一些概念和理论,又回到这里来,才终于能看懂并且开始复现一些简单的题目。入门学习的资料有两个,一个是C0lin师傅的,一个是返璞归真师傅的。
这道题出来就是防ak的,对于新生赛来说确实有点难度,如果之前没接触过protobuf,在短时间内没那么容易直接做出来。但是如果你现在跟着wp复现过一次,那么之后再遇到,就会没那么慌了,甚至游刃有余。
题目名称: QQbot
1 | void *__fastcall sub_1389(double a1) |
申请了一块mmap地址。