PolarCTF-Pwn的WP

_ljnljn發表於2024-12-05

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
image

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;
}

image