首先惯例checksec一下
攻防世界int_overflow
从上图可以看出,这是一个32位的程序,并且只开了堆栈不可执行的保护。
我们使用IDA查看一下源码:
攻防世界int_overflow点进login
攻防世界int_overflow进入这个check_passwd函数:
攻防世界int_overflow
当v3>3u且v3<8u进入else。else中把s的值复制到dest,如果s的值够长,就能造出栈溢出。
但是3<v3<8限制了s的长度了,怎么办呢?我们可以看一下汇编代码:会发现程序把s放到一个al寄存器中,al是一个八位寄存器,八位寄存器对于无符号整数来说是有0~255的范围的。v3为无符号整型,表示s(即你输入的passwd)的长度,可能存在整数溢出。
接着看看有什么代码是可以利用的:那么跳转到这个地址就可以得到我们想要的flag了!
攻防世界int_overflow
攻防世界int_overflow

相关文章:

  • 2021-04-25
  • 2022-01-09
  • 2021-07-25
  • 2021-06-17
  • 2021-08-31
  • 2021-08-07
  • 2021-10-29
  • 2021-11-27
猜你喜欢
  • 2021-08-13
  • 2021-11-03
  • 2022-12-23
  • 2021-06-17
  • 2021-07-01
  • 2021-09-11
  • 2021-12-18
相关资源
相似解决方案