整数溢出
上界溢出,下界溢出。
不同的数据类型混用
比如read函数的length是接收Unsigned int,但是你输入-1就会被解释的很大。那么就能作为缓冲区溢出(但是是在堆上,只是类似)。
错误类型转换
比如int是4字节,如果判断int==0为yes
,那么输入时如果给的是long int实参10000也会被解释为yes(发生截断).
小例子
比如下面能发现使用了int8,然后还用它作为strcpy的长度。
可能以为经过3<x<8检测就没问题,但是因为int8最多表示0xff,只要输入0x103即可轻松混过检测。
然后再用很简单的payload覆盖缓冲区就可以了。
本文来自博客园,作者:muyiGin,转载请注明原文链接:https://www.cnblogs.com/muyiGin/p/18367140