首页
社区
课程
招聘
[原创]看雪CTF.TSRC 2018 团队赛 第十四题 你眼中的世界
发表于: 2018-12-28 11:44 5363

[原创]看雪CTF.TSRC 2018 团队赛 第十四题 你眼中的世界

2018-12-28 11:44
5363
题目源码:
__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
  signed int v3; // ebx
  unsigned int v4; // eax
  void *v5; // rbp

  v3 = 5;
  sub_5647BE0B4AB0();
  puts("echo from your heart");
  do
  {
    __printf_chk(1LL, "lens of your word: ");
    v4 = sub_5647BE0B4AF0(1LL, "lens of your word: ");
    if ( v4 > 0x1000 )
    {
      puts("too long");
      exit(1);
    }
    v5 = malloc(v4);
    __printf_chk(1LL, "word: ");
    gets(v5);
    __printf_chk(1LL, "echo: ");
    __printf_chk(1LL, v5);
    putchar(10);
    --v3;
  }
  while ( v3 );
  return 0LL;
}

__int64 __fastcall main(__int64 a1, char **a2, char **a3)
{
  signed int v3; // ebx
  unsigned int v4; // eax
  void *v5; // rbp

  v3 = 5;
  sub_5647BE0B4AB0();
  puts("echo from your heart");
  do
  {
    __printf_chk(1LL, "lens of your word: ");
    v4 = sub_5647BE0B4AF0(1LL, "lens of your word: ");
    if ( v4 > 0x1000 )
    {
      puts("too long");
      exit(1);
    }
    v5 = malloc(v4);
    __printf_chk(1LL, "word: ");
    gets(v5);
    __printf_chk(1LL, "echo: ");
    __printf_chk(1LL, v5);
    putchar(10);
    --v3;
  }
  while ( v3 );
  return 0LL;
}

猜测漏洞在gets,具体怎么利用一无所知。
然后发现函数__printf_chk 没有见过,不知道有没有print不一样的地方。
搜了一下,居然发现了跟此题神似的原题:
hctf2017 babyprintf
并找到wp一篇:
https://bbs.pediy.com/thread-222735.htm
按照此wp操作,得到了libc地址,但是原文中的vtable偏移并不知道怎么来的。
vtable_addr=libc_base+0x3BE4C0
打开libc2.24看了一下

然而再libc2.23 中并无此节__libc_IO_vtables
所以此方法gg.

用google 搜索 hctf2017 pwn  unsortedbin attack,找到另外一篇wp:
https://veritas501.space/2017/12/13/IO%20FILE%20%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
其中第五部分

HCTF2017 babyprintf

正是此题,wp似乎更为简单。
照此wp操作,唯一的问题是此wp中_IO_str_jumps偏移可以直接搜索符号得到,但是2.23中运行并不可以。
好在又找到一篇wp:

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-12-28 11:46 被lacoucou编辑 ,原因: 修改错字
收藏
免费 4
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//