-
-
[求助]关于 13.2.1动态调试 的溢出问题
-
发表于:
2010-9-8 14:27
4054
-
小弟最近在看0day,但是"13.2.1 动态调试"(Page284) 这一小节中有一处不明白,就是在触发NetpwPathCanonicalize()函数漏洞的POC代码中,arg_1[0x320]和arg_4[0x100]这2个参数所占的栈空间总共也就0x420,比参数arg_2[0x440]的空间小,在经过
memset(arg_1, 0, sizeof(arg_1));
memset(arg_1, 'a', sizeof(arg_1) - 2); //这里的字符应该没有越界吧
memset(arg_4, 0, sizeof(arg_4));
memset(arg_4, 'b', sizeof(arg_4) - 2); //这里的字符应该没有越界吧
之后,直接调用(Trigger)(arg_1, arg_2, arg_3, arg_4, arg_5, 0);
为什么会溢出呢。
书上原话:"这段代码做的仅仅是转载存在漏洞的netapi32.dll,并调用其导出函数NetpwPathCanonicalize。在函数调用时,我们将arg_1和arg_4设置成很长的字符串,用以触发栈溢出。注意这个字符串以两个字节的NULL结束,这是因为NetpwPathCanonicalize将按照unicode来处理字节串"。
书上说把 arg_1和arg_4设置成很长的字符串 ,但是字符串也没越界啊
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)