-
-
[原创]经典整数溢出漏洞示例 XCTF int_overflow
-
发表于:
2019-9-4 10:06
7931
-
[原创]经典整数溢出漏洞示例 XCTF int_overflow
整数溢出原理
整数分为有符号和无符号两种类型,有符号数以最高位作为其符号位,即正整数最高位为1,负数为0,无符号数取值范围为非负数,常见各类型占用字节数如下:
也就是说,对于一个2字节的Unsigned short int型变量,它的有效数据长度为两个字节,当它的数据长度超过两个字节时,就溢出,溢出的部分则直接忽略,使用相关变量时,使用的数据仅为最后2个字节,因此就会出现65537等于1的情况,其他类型变量和数值与之类似,
接下来看XCTF攻防世界里面的一道题:int_overflow
32位,No canary found
首先在main函数中,没有任何可疑的
进入login函数:
接受了一个最大长度为0x199的password
进入check_passwd函数:
用一个一字节,8bit的变量存储password的长度,之后存在一个字符串拷贝,拷贝目的地在栈中,长度为14h,及0x14,十进制20,
结合前面溢出原理分析,0x199(十进制409)的长度远大于1字节,即
也就是说,这里存在证书溢出,password字符串的长度可以是3-8个字符,也可以是259-264个字符,接下来查看如何利用此漏洞。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)