小编use*_*955的帖子

printf()var-arg引用如何与堆栈内存布局交互?

给出代码片段:

int main()
{
    printf("Val: %d", 5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有没有保证编译器会存储"Val: %d"'5'连续?例如:

+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| ... |  %d | ' ' | ':' | 'l' | 'a' | 'V' | '5' | ... |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
      ^                                   ^     ^
      |           Format String           | int |
Run Code Online (Sandbox Code Playgroud)

这些参数究竟是如何在内存中分配的?

此外,printf函数是否相对于格式字符串或绝对值访问int?例如,在数据中

+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| ... |  %d | ' ' | ':' | 'l' | 'a' | 'V' | '5' | ... |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
      ^                                   ^     ^
      |           Format String           | int | …
Run Code Online (Sandbox Code Playgroud)

c memory stack exploit string-formatting

13
推荐指数
1
解决办法
1529
查看次数

标签 统计

c ×1

exploit ×1

memory ×1

stack ×1

string-formatting ×1