整数溢出

上界溢出,下界溢出。

不同的数据类型混用

比如read函数的length是接收Unsigned int,但是你输入-1就会被解释的很大。那么就能作为缓冲区溢出(但是是在堆上,只是类似)。

错误类型转换

比如int是4字节,如果判断int==0为yes,那么输入时如果给的是long int实参10000也会被解释为yes(发生截断).

小例子

比如下面能发现使用了int8,然后还用它作为strcpy的长度。
可能以为经过3<x<8检测就没问题,但是因为int8最多表示0xff,只要输入0x103即可轻松混过检测。

然后再用很简单的payload覆盖缓冲区就可以了。

posted @ 2024-08-19 13:38  muyiGin  阅读(12)  评论(0编辑  收藏  举报