题目为:
main() { printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60); }
|
解体:
-------------------------------------------------------------------
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
-------------------------------------------------------------------
main() { printf( &unix[ "\021%six\012\0"], (unix)["have"] + "fun" - 0x60); }
-------------------------------------------------------------------
main() { printf( "\021%six\012\0" + unix, *("have" + unix) - 0x60 + "fun"); }
-------------------------------------------------------------------
main() { printf( "\021%six\012\0" + 1, *("have" + 1) - 0x60 + "fun"); }
-------------------------------------------------------------------
main() { printf( "%six\012\0", 'a' - 0x60 + "fun"); }
-------------------------------------------------------------------
main() { printf( "%six\n", "un"); }
-------------------------------------------------------------------
main() { printf( "unix\n"); }
|
说明:
本人看到此程序时也没有立刻想出为何会打印出unix,看了网友的解答后才清楚。
解释链接:
阅读(762) | 评论(0) | 转发(0) |