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)时进行溢出
脚本
#!/usr/bin/env python3
from pwn import*
context(os="linux",arch="i386",log_level="debug")
content=1
def main():
if content==0:
io=process("./int_overflow")
else