0x00 前言
这道题出来就是防ak的,对于新生赛来说确实有点难度,如果之前没接触过protobuf,在短时间内没那么容易直接做出来。但是如果你现在跟着wp复现过一次,那么之后再遇到,就会没那么慌了,甚至游刃有余。
题目名称: QQbot
这道题出来就是防ak的,对于新生赛来说确实有点难度,如果之前没接触过protobuf,在短时间内没那么容易直接做出来。但是如果你现在跟着wp复现过一次,那么之后再遇到,就会没那么慌了,甚至游刃有余。
题目名称: QQbot
1 | void *__fastcall sub_1389(double a1) |
申请了一块mmap地址。
ret2text,没什么好讲的。有个cat flag的字符串,直接用。
1 | from pwn import * |
magic gadget其实是一类gadget的统称,指可以巧妙地实现某些目的的gadget。这里要讲的gadget只是众多magic gadget中的其中一个,可以在没法泄露libc地址的时候达到能够使用libc地址的目的。
这里要讲的gadget位于程序的__do_global_dtors_aux
函数中,偏移是0x18。
非常经典的没有回显的0x10字节溢出,栈迁移。第一件事就要先考虑怎么泄露出libc地址。我们选择将栈劫持到bss段。从汇编代码可知vuln函数栈帧开辟了0x30大小,所以把rbp劫持为某个选定的bss段+0x30,这样rbp就会跳到bss+0x30。