由于pwnable.kr说明了不要将题解的利用脚本直接提出来,所以我就简单说下思路,本篇包括三个题目
目录
0x01 dragon
执行步骤
整数溢出漏洞:pDragon->HP 的类型是 signed byte,所以当超过127,就是负数了。这就是整数溢出漏洞
uaf漏洞:
1. malloc person
2. malloc dragon
3. free dragon
4. malloc pInput=dragon
((void (__cdecl *)(dragon *))pDragon->f_printinfo)(pDragon); = ((void (__cdecl *)(dragon *))pInput->f_printinfo)(pInput);
ida struct
00000000 person struc ; (sizeof=0x10, mappedto_5)
00000000 type dd ?
00000004 HP dd ?
00000008 MP dd ?
0000000C f_printinfo dd ? ; offset
00000010 person ends
00000010
00000000 ; ---------------------------------------------------------------------------
00000000
00000000 dragon struc ; (sizeof=0x10, mappedto_6)
00000000 f_printinfo