首页 > 其他 > 详细

off-by-one

时间:2021-08-19 14:53:03      阅读:13      评论:0      收藏:0      [点我收藏+]

off-by-one

严格来说 off-by-one 漏洞是一种特殊的溢出漏洞,off-by-one 指程序向缓冲区写入时,写入的字节数超过了这个缓冲区本身申请的字节数并且只越界了一个字节

char buf[size];
for (int i = 0; i <= size; i++) {
    buf[i] = getchar();
}

通常是在buf[size]位置在非法写入一个字节,堆上(heap based) 的 off-by-one 是 CTF 中比较常见的

Asis-2016-b00ks | off-by-one

IDA分析,已下是逆向过的代码,方便理解

技术分享图片

Change先在author处输入32个字节,此处有off-by-one漏洞,触发需要注意代码执行顺序

技术分享图片

技术分享图片

之后是菜单选择,Create主要是创建book结构体以及book_list

技术分享图片

为方便理解用调试看一下

技术分享图片

技术分享图片

绿框是我们输入的author name,红框是book1,蓝框是booklist,可以容纳最多20本书(20的原因是下面的check full函数)

技术分享图片

技术分享图片

绿色,红色,橙色分别对应name,description,book,红色框是可以变化的,取决于size,下图的后三行中的0x30大小的chunk是截止到目前调用一次Create(3次malloc)

技术分享图片

技术分享图片

可以看出Print是按地址解析的。

off-by-one

原文:https://www.cnblogs.com/zuoanfengxi/p/15161144.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!