[Pwnable.kr] ascii_easy
这应该是网上这道题第一篇公开的solution吧。首先要感谢一下韩国小哥inhack,虽然他的blog基本都是加密的,然而我在fb上联系到他之后他很热情地引导我做出了这道题,让我学到了新的东西。
这道题首先给出了提示”ulimit”,这里是一个可以禁用ALSR的黑科技,当设置ulimit -s unlimted时,系统的ALSR将会失效,原因在于arch/x86/mm/mmap.c中:
1 2 3 4 5 6 7 8 9 10 |
static int mmap_is_legacy(void) { if (current->personality & ADDR_COMPAT_LAYOUT) return 1; if (rlimit(RLIMIT_STACK) == RLIM_INFINITY) return 1; return sysctl_legacy_va_layout; } |
在第二个if会返回true,所以ALSR就不起作用了,所有的地址成为固定值。
然后我们再看这个题,F5反汇编得到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |