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;
}
标签:strchr,PolarCTF,puts,cat,flag,WP,Pwn,buf,输入
From: https://www.cnblogs.com/ljnljn/p/18588474