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