首页
社区
课程
招聘
[求助] 一道完全没思路的题
发表于: 2019-11-18 06:22 7434

[求助] 一道完全没思路的题

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

因为我感觉两个数组都溢出不了,所以完全不知道还有什么方法可以影响这个程序的运行.
谢谢大家了!


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
https://xz.aliyun.com/t/4384
大佬看看这个对你有没有帮助
2019-11-18 06:30
0
雪    币: 14517
活跃值: (17538)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
3
拿到题之后尝试输入特别长的数据,或者是特殊字符串(比如:%p)之类的,这题不太想堆题
2019-11-18 10:26
0
雪    币: 44
活跃值: (56)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
4
可以把附件发上来吗
2019-12-15 22:14
0
雪    币: 6303
活跃值: (2051)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
5
直观看,貌似溢出的空间够的。char s[1024]; // [esp+4h] [ebp-404h] 溢出点s距离ebp是0x404字节。但是这个不一定准。需要绕过canary, 结合gdb调试
2019-12-16 16:44
0
游客
登录 | 注册 方可回帖
返回
//