首页
论坛
课程
招聘
[求助] 一道完全没思路的题
2019-11-18 06:22 4994

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

2019-11-18 06:22
4994

这道题据说应该和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);
}

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


[培训]12月3日2020京麒网络安全大会《物联网安全攻防实战》训练营,正在火热报名中!地点:北京 · 新云南皇冠假日酒店

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