0x01 寻找漏洞
1 | xfgg@ubuntu:~/Downloads$ checksec int_overflow |
1 | read 函数处可以进行溢出,但是需要经过 check_passwd 函数才能将跳出login。现在再看一下 check_passwd 函数内部, |
1 | v3 = strlen(s);造成整数溢出的一个点,我们再看一下此处的汇编代码。 |
1 | call strlen 之后 返回值放在了al寄存器中,这是一个八位的积存器,也就是说如果 s 字符串的长度 大于255 就会造成 整数溢出。 再加上四字节就可以溢出 |
0x02 思路分析
1 | 我们需要进到else里,将 read 读进来的 s 复制到 dest 中,是一个可以利用的栈溢出。 |
0x03 攻击
1 | 栈溢出漏洞 加一个整数漏洞 |
exp
1 | from pwn import * |