ciscn_2019_s_4(栈溢出)
# 1. 查看程序
32 位程序,开启了 NX
ida 反汇编:
vul函数 :可以看到只能溢出两个字,也就只能覆盖 ebp 和 ret,这种一般都需要栈迁移
hack函数 :只提供了 system 函数,无法获得 flag,所以不能直接用这个地址覆盖 ret
# 2. 漏洞分析
由于可以溢出的字节数太小,所以就需要进行栈迁移,这里要考虑迁移的地址,首先 bss 段上没有很大的空间,并且没有备份去写入内容到 bss,所以就只能考虑栈上,那么就需要我们泄露栈上的地址,这里就可以利用 printf 来打印出 mian 函数的 ebp 地址再利用偏移就能计算出我们输入的字符串的地址:
more...