-
-
[原创]看雪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编辑
,原因: 修改错字
赞赏记录
参与人
雪币
留言
时间
一笑人间万事
为你点赞~
2023-1-31 03:51
inquisiter
为你点赞~
2019-1-8 17:05
qux
为你点赞~
2018-12-31 12:14
Editor
为你点赞~
2018-12-29 14:56
赞赏
他的文章
看原图
赞赏
雪币:
留言: