PolarCTF-Pwn的WP

1、sandbox

ida查看box函数,发现对输入的字符做了检查(sh、cat、flag)

if ( strchr(buf, 's') || strchr(buf, 'h') || strstr(buf, "cat") || strstr(buf, "flag") || strchr(buf, '-') )
  {
    puts("Illegal command.");
    exit(0);
  }

看这篇文章:pwn中常见的绕过(以后见多了会慢慢更的,咕咕咕) – Falling_Dusk – 博客园

对命令进行处理

首先想办法输入sh进去来提权:输入等价的$0
然后发现输什么都不会被拦截,获得flag

2、creeper

ida看game函数,发现只要字符数组长度为15就可以输出flag

注意这里换行符也算一个字符,因此输入14个字符换行即可

__int64 game()
{
  char buf[64]; // [rsp+0h] [rbp-40h] BYREF

  puts("Creeper?");
  read(0, buf, 0x100uLL);
  if ( strlen(buf) == 15 )
  {
    puts("Aw man");
    system("cat flag");
  }
  else
  {
    puts("Si............");
  }
  return 0LL;
}

请登录后发表评论

    没有回复内容