-
-
[求助] 一道完全没思路的题
-
发表于:
2019-11-18 06:22
7434
-
这道题据说应该和ROP有关系, 但萌新如我完全没有任何思路,想问问大家有没有什么思路. 保护的话是
Arch: i386-32-little
RELRO: No RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
反编译之后的代码如下
int __cdecl main(int argc, const char **argv, const char **envp)
{
int result; // eax
int v4; // ebx
char ptr[1600]; // [esp+4h] [ebp-1648h]
int v6[1024]; // [esp+644h] [ebp-1008h]
unsigned int v7; // [esp+1644h] [ebp-8h]
v7 = __readgsdword(0x14u);
if ( argv[1] )
{
printf("Service id is: %p\n", v6);
for ( a_index = 0; a_index <= 1023; ++a_index )
{
v4 = a_index;
v6[v4] = get_int();
}
fread(ptr, 1u, 0x190u, stdin);
syscall(15);
result = 0;
}
else
{
fwrite("Missing flag file\n", 1u, 0x12u, edata);
result = 1;
}
return result;
}
int get_int()
{
char s[1024]; // [esp+4h] [ebp-404h]
unsigned int v2; // [esp+404h] [ebp-4h]
v2 = __readgsdword(0x14u);
fgets(s, 1024, stdin);
return strtol(s, 0, 0);
}
因为我感觉两个数组都溢出不了,所以完全不知道还有什么方法可以影响这个程序的运行.
谢谢大家了!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!