RealWorld CTF6th高校体验赛
vision(Pwn, Panasonic(PCSL), difficulty:Baby)
- 这里会先通过’ ‘截断进行strncpy,同时strncmp(v10, s2, v13)中的s2,v13都是可控的,输入sh -c “cat ./flag”。利用sh后的’ ‘,那么相当于strncmp(“showKey”,“sh”,2)因此就可以绕过 好经典的截断问题,一开始仔细看openthedoor看到伪随机数,结果发现 snprintf(a1, 8uLL, “cat ./flagx \n”)程序就结束了,根本用不了,最后在这里发现了漏洞
memset(s2, 0, sizeof(s2));
v11 = strchr(a1, ' ');
if ( v11 )
{
strncpy(s2, a1, v11 - a1);
}
else
{
n = strlen(a1);
strncpy(s2, a1, n);
}
v13 = strlen(s2);
if ( v13 )
{
v7 = 0;
v10 = off_4020[0];
while ( strncmp(v10, s2, v13) )
{
v10 = off_4020[++v7];
if ( !off_4020[v7] )
{
strcpy(a2, "Not Support 4. \n");
return __readfsqword(0x28u) ^ v23;
}
}
}
后面的题目不想复现了…