—XCTF 4th-QCTF-2018
前言,怎么说呢,这题目还是把我折磨的可以的,我一开始是没有看到后面的直接狙击的,只能说呢。
我的不经意间的粗心,破坏了你许多的温柔
1.气的我直接检查保护:
32位程序,开启了canary保护。
2.ida查看:
首先放的第一幅图片呢,是我一开始以为可以溢出的,也可以看见我旁边标注了一个maybeoverflow。
- 但是是不可以的,因为首先由于这里的 i 最大上限100,可能有的人头铁就要说了,这里v7可以慢慢溢出去修改i,(和我一样)
可是这里v13的存储位置是和i有关的,所以不可能让你能一直溢出,后面看到了canary,我又去找了找格式化漏洞,没有找到,最最最离谱的是:
我居然想着去修改tls字段的canary数值和canary数值(有这个方法,但是这里用不了)
最后看到当我输入3的时候,那里有一个非常明显的定向狙击。
那就很简单了,去开心的写exp,确定 偏移量为74
那就v13[0x74]=???v13[0x75]=???
结果就是失败,为什么呢???
答案是这道题它后面会对栈帧做一定调整,也就是ebp上面一位高地址的地方并不是返回地址,我们这里可以结合着汇编代码看一下
在没有运行结束前,ebp下一位标的返回地址是0xffffd15c,但是我们看看ida里面的代码: