首页
社区
课程
招聘
[求助]printf 中$啥意思
发表于: 2018-3-4 18:27 5451

[求助]printf 中$啥意思

2018-3-4 18:27
5451

看到别人写的某个pwn中,printf打印的参数中发现$符号,没明白什么意思,然后自己写了个例子,打印结果貌似是个随机的栈的地址,求解

#include <stdio.h>
int main(int argc,char* argv[])
{
    int num=0x601060 ;
    printf("%p %#x\n",&num,num );
    printf("%8$p----%8$s\n");
    return 0;
}

结果:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 106
活跃值: (764)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
我查到8$是指printf的第8个参数,windows上似乎没效果。

好像这是个POSIX标准。osx等unix之类的系统才行。
2018-3-4 19:28
0
雪    币: 209
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不是随机的。  $  号是用来指定参数的。
读取栈上某地址的话大概格式是:%参数顺序$类型,譬如  %7$lx  就是以  lx  格式读第  7  个参数的值。
如果做写入的话一般格式是:  %数值c%参数顺序$类型,譬如说  %40c%5$hhn  就是向第  5  个参数写入  44  这个数值。
2018-3-5 02:05
1
雪    币: 507
活跃值: (1327)
能力值: ( LV9,RANK:153 )
在线值:
发帖
回帖
粉丝
4
谢谢
2018-3-5 12:26
0
游客
登录 | 注册 方可回帖
返回