int_overflow 攻防世界
r2t3 BUU
overflow
@TOC
int_overflow 攻防世界
file checksec
ida32,进入login
输入一个用户名,再输入一个passwd,都无法直接栈溢出,进入check_passwd
发现v3是输入passwd的长度,v3是unsigned __int8类型范围是0~255
如果s的长度超过255,会变为(对s长度取模运算)得到的值。而s的长度不能大于0x199(409),取模后 v3>3&&v3<=8 ,所以输入260个字符就可以绕过if
查字符串可以找到cat flag
通过交叉引用列表可以找到调用system的地址
strcpy(dest,s)时进行溢出
脚本
1 | #!/usr/bin/env python3 |
r2t3 BUU
file checksec
ida32
和上一题一模一样
脚本
1 | #!/usr/bin/env python3 |
overflow
实验室内部的一道题
file checksec
ida64
nbytes是unsigned long long型,下面if中强制转换为signed int型(范围变小,导致截断),而在下面read函数中第三个参数仍为size_t型,因此会造成整型溢出漏洞
所以我们只需让输入的数%4294967295<30或>2147483647(溢出成负数)即可
找到后门函数
脚本
1 | #!/usr/bin/env python3 |
-------------本文结束感谢您的阅读-------------